2

RESTEasy クライアントを使用して「レガシー」REST サーバーをマップしようとしています。

この ws の URL は次のようにマッピングされます。

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

しかし、明らかにこれは正しい方法ではありません (さらに、エスケープされているため機能しません)。

4

1 に答える 1

0

おそらく、メソッドでHttpServletRequestを直接使用し、リクエストパラメータを「手動で」解析する方がよいでしょう。つまり:

@POST
@Path("/server.php")
@Produces("application/json")
List<Map<String, Object>> getCourses(@Context HttpServletRequest request){
   //parse request.getParameters()
}
于 2012-05-10T07:00:34.977 に答える