我正在将我现有的一项服务转换成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();
}
答案 0 :(得分:17)
只需将方法体放在另一个方法中,并为每个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();
}
}
答案 1 :(得分:4)
正如wikipedia所述,如果API是具有四个已定义方面的资源集合,则它是RESTful:
http://example.com/resources/
通过缩小GET
和POST
之间的差异,您违反了第三方面。
答案 2 :(得分:0)
如果此方案适合您的所有资源,您可以创建一个包装请求的ServletFilter,并在每次请求方法时返回Get或Post。