当前位置:  开发笔记 > 程序员 > 正文

使用REST删除http

如何解决《使用REST删除http》经验,为你挑选了2个好方法。

我目前正在使用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原则.



1> tuxSlayer..:

是的,由您决定,但是当我获得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


'?wipeData = true'是对查询字符串的误用.rfc 3986第3.4节规定"查询组件包含非分层数据,与路径组件(第3.3节)中的数据一起用于标识URI方案和命名权限(如果有)范围内的资源." 有点令人困惑的是rfc 7231第4.2.1节提到"例如,基于Web的内容编辑软件通常在查询参数中使用动作,例如"page?do = delete""我会说这也是不正确的.

2> Darrel Mille..:

DELETE方法应使用URL来标识要删除的资源.这意味着您可以使用路径参数或查询参数.除此之外,就REST而言,构建URL没有正确和错误的方法.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有