我目前正在使用Jersey Framework(JAX-RS实现)来构建RESTful Web服务.项目中的Resource类已经实现了标准的HTTP操作--GET,POST和DELETE.我试图弄清楚如何从客户端向这些方法发送请求参数.
对于GET,它将在查询字符串(提取使用@QueryParam
)中,POST将是@FormParam
与请求主体一起发送的名称/值对列表(使用提取).我使用HTTPClient测试它们并且工作正常.对于DELETE操作,我没有找到关于参数类型/格式的任何结论性答案.DELETE操作是否在查询字符串(使用提取@QueryParam
)或正文(使用提取)中接收参数@FormParam
?
在Web上的大多数DELETE示例中,我观察到使用@PathParam
注释进行参数提取(这将再次来自查询字符串).
这是将参数传递给DELETE方法的正确方法吗?我只是想在这里小心,以便我不违反任何REST原则.
是的,由您决定,但是当我获得REST意识形态时,DELETE URL应该删除由GET URL请求返回的内容.例如,如果
GET http://server/app/item/45678
返回ID为45678的项目,
DELETE http://server/app/item/45678
应该删除它.
因此,我认为使用PathParam比使用QueryParam更好,因为QueryParam可用于控制工作的某些方面.
DELETE http://server/app/item/45678?wipeData=true
DELETE方法应使用URL来标识要删除的资源.这意味着您可以使用路径参数或查询参数.除此之外,就REST而言,构建URL没有正确和错误的方法.