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

Java REST: @GET and @PUT at the same path?

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

this exampleUserService class(靠近底部)中,有一个 @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,程序如何知道 调用哪个 方法?

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

资源类有methods当特定HTTP方法requests被制定时invoked,称为资源methods。为了创建将使用特定 HTTP 方法调用的 Java 方法,必须实现常规 Java 方法并使用 JAX-RS @HttpMethod 注释注释之一进行注释 (namely, @GET, @POST, @PUT, and @DELETE).

有关详细信息,请查看此 example1 and example2