2012-05-03 2 views
2

Я пытаюсь отобразить «старый» REST-сервер, используя клиент RESTEasy.RESTEasy, отображающий «наследие» службы REST Moodle

URL-адреса из этого WS отображаются так:

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

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

@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

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

ответ

0

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

@POST 
@Path("/server.php") 
@Produces("application/json") 
List<Map<String, Object>> getCourses(@Context HttpServletRequest request){ 
    //parse request.getParameters() 
} 
Смежные вопросы