为@Delete JAX-RS方法添加另一个参数?

时间:2013-03-12 10:41:00

标签: annotations jersey jax-rs

服务器资源从客户端正确接收对下面提到的remove()的“删除”操作的调用。

@DELETE @Path("{id}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public void remove(@PathParam("id") int id) {
        dao.remove(id);
}

这里我也从路径中正确获取'id'参数,从数据库中删除包含'id'的记录。

我的问题是,如果我想从同一个'路径'获取另一个参数,比如说“密码”,要在删除记录之前验证输入的密码,有没有办法做到这一点?

请告诉我你的建议。

2 个答案:

答案 0 :(得分:0)

从技术上讲,可以在@Path注释的URI模板中包含多个参数,因此您可以:

@Path("{id}/{password}")
@DELETE @Path("{id}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public void remove(@PathParam("id") int id, @PathParam("password") String pwd) {
        // ...
}

然而,另一个问题是,这是否是授权删除请求的正确方法。

答案 1 :(得分:0)

请改为尝试:

@DELETE
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public void remove(@QueryParam(value = "id") int id, @QueryParam(value = "pw") String pw)     {
  .....
}

资源必须是问号,如url / url?id = 1& pw = PASSWORD。 但是通过网址传输密码并不是很节省。