7

我正在将我现有的一项服务转换为 RESTful,并且我已经掌握了使用 RestEasy 的基本功能。我的一些客户端应用程序应该能够对多个服务执行 GET 和 POST 请求。我只是在寻找围绕 jax-rs 是否有任何简单的方法来指定 API 应该同时接受 GET 和 POST。接下来你可以找到一个测试方法,如果你看到任何方法而不用@GET和@QueryParam在另一个类中复制它,请告诉我。

@POST
@Path("/add")
public Response testREST(@FormParam("paraA") String paraA,
        @FormParam("paraB")  int paraB) {

    return Response.status(200)
            .entity("Test my input : " + paraA + ", age : " + paraB)
            .build();

}
4

3 回答 3

19

只需将您的方法主体放在另一个方法中,并为每个 HTTP 动词声明一个公共方法:

@Controller
@Path("/foo-controller")
public class MyController {

    @GET
    @Path("/thing")
    public Response getStuff() {
        return doStuff();
    }

    @POST
    @Path("/thing")
    public Response postStuff() {
        return doStuff();
    }

    private Response doStuff() {
        // Do the stuff...
        return Response.status(200)
                .entity("Done")
                .build();
    }
}
于 2012-11-15T23:38:06.723 回答
4

正如维基百科所说,如果 API 是具有四个已定义方面的资源集合,那么它就是 RESTful:

  • Web 服务的基本 URI,例如http://example.com/resources/
  • Web 服务支持的数据的 Internet 媒体类型。这通常是 XML,但可以是任何其他有效的 Internet 媒体类型,只要它是有效的超文本标准。
  • Web 服务使用 HTTP 方法(例如,GET、PUT、POST 或 DELETE)支持的一组操作。
  • API 必须是超文本驱动的。

通过减少和之间的差异GETPOST你违反了第三个方面。

于 2012-11-20T08:24:07.077 回答
0

如果此方案适合您的所有资源,您可以创建一个包装请求的 ServletFilter,并在每次请求该方法时返回 Get 或 Post。

于 2012-11-16T10:48:19.017 回答