2

我正在尝试使用 RESTEasy 客户端映射“旧版”REST 服务器。

这个 ws 的 url 映射如下:

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

但显然这不是正确的方法(另外,它不起作用,因为它被转义了)

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 回答