RESTEasy сопоставление устаревшей службы Moodle REST

Я пытаюсь сопоставить «устаревший» сервер REST с помощью клиента RESTEasy.

URL-адреса этого ws отображаются следующим образом:

http://localhost/webservice/rest/server.php?wstoken=reallylongtokenhash&wsfunction=core_course_get_courses

Конечной точкой всегда является server.php, а вызываемая функция отображается с помощью параметра запроса.

@POST
@Path("/server.php")
@Produces("application/json")
List<Map<String, Object>> getCourses(
          @QueryParam("wstoken") String token
        , @QueryParam("wsfunction") String function
        , @QueryParam("moodlewsrestformat") String format);

@POST
@Path("/server.php")
@Produces("application/json")
String createUser(
          @QueryParam("wstoken") String token
        , @QueryParam("wsfunction") String function
        , @QueryParam("moodlewsrestformat") String format
        , @Form User user);

который я называю таким образом

private static void getCourses() {
    final MoodleRest client = ProxyFactory.create(MoodleRest.class, "http://localhost/webservice/rest/");
    final List<Map<String, Object>> s = client.getCourses(token, "core_course_get_courses", "json");
    System.out.println("s = " + s);
}

Давайте проигнорируем тот факт, что метод «get_courses» сопоставляется с использованием POST и что токен передается с использованием QueryParameter в этом сообщении. Можно ли избежать передачи функции и формата ответа для каждого метода? Я хотел бы отобразить его с помощью аннотаций.

Я попытался написать прямо в @Path, используя

/server.php?function=core_course_get_courses

Но, очевидно, это неправильный способ продолжения (плюс, он не работает, так как он экранирован)


person Luca Molteni    schedule 03.05.2012    source источник


Ответы (1)


Возможно, было бы лучше использовать HttpServletRequest прямо в вашем методе и парсить параметры запроса "вручную". Я имею в виду:

@POST
@Path("/server.php")
@Produces("application/json")
List<Map<String, Object>> getCourses(@Context HttpServletRequest request){
   //parse request.getParameters()
}
person Piotr Kochański    schedule 10.05.2012