Java REST:@GET和@PUT在同一条路径上?

时间:2016-02-01 22:05:11

标签: java rest get jax-rs put

我目前正在尝试使用Java REST了解JAX-RS的基础知识。

this exampleUserService类(靠近底部),@GET@PUT方法都有相同的@path注释:

@GET
@Path("/users")
@Produces(MediaType.APPLICATION_XML)
public List<User> getUsers() {
   return userDao.getAllUsers();
}

@PUT
@Path("/users")
@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String createUser(@FormParam("id") int id,
   @FormParam("name") String name,
   @FormParam("profession") String profession,
   @Context HttpServletResponse servletResponse) throws IOException {
   User user = new User(id, name, profession);
   int result = userDao.addUser(user);
   if(result == 1) {
      return SUCCESS_RESULT;
   }

   return FAILURE_RESULT;
}

该程序如何知道要调用哪个方法,因为它们都指向相同 @path

2 个答案:

答案 0 :(得分:2)

JAX-RS评估请求的HTTP method,然后在UserService中调用适当的Java方法。

答案 1 :(得分:2)

在制定特定methods方法invoked时,资源类HTTPrequests,称为资源methods。为了创建将使用特定HTTP方法调用的Java方法,必须使用JAX-RS @HttpMethod带注释的注释(namely, @GET, @POST, @PUT, and @DELETE).

之一实现常规Java方法并进行注释。

有关详细信息,请查看此example1example2