如何使用Restful Web服务将两种Web方法用于两种不同的操作?

时间:2013-12-23 14:04:44

标签: java web-services rest jersey

我正在使用Jersey Restful webservices。我有以下网络方法来获得结果。

@Path("/persons")
public class PersonWS {
    private final static Logger logger = LoggerFactory.getLogger(PersonWS.class);

    @Autowired
    private PersonService personService;

    @GET
    @Path("/{id}")
    @Produces({MediaType.APPLICATION_XML})
    public Person fetchPerson(@PathParam("id") Integer id) {
        return personService.fetchPerson(id);
    }

    @DELETE
    @Path("/{id}")
    public void deletePerson(@PathParam("id") Integer id) {
        return personService.deletePerson(id);
    }


}

在上面的Jersey RESTful webservice中,我有两个web方法,一个用于获取,另外一个用于删除,具有相同数量的参数。 在上述情况下是否存在歧义?如果不是这两种方法的URI应该是什么?谢谢!

谢谢!

3 个答案:

答案 0 :(得分:2)

由于HTTP方法不同(GET vs DELETE),因此不存在歧义。

使用HTTP方法PUT

,也可以使用相同的URL更新对象

答案 1 :(得分:2)

Jersey decides根据请求中指定的HTTP method调用哪种方法。如果您使用与GET相同的HTTP方法使用多个方法,则会选择更多注释,例如ConsumesProduces等。

顺便说一句:如果您对所有端点使用URI /persons/{id},那么您可以使用@Path("/persons/{id}")注释您的类,而不是使用此子URI注释每个方法。

答案 2 :(得分:0)

由于使用的HTTP方法不同,即GET和DELETE,因此没有歧义 并且网址与所需的参数相同

是“id”

在Jersey客户端程序中使用GET http方法获取人员信息,使用DELETE http方法删除此人。