代码旅行

RESTFUL API 中删除操作的设计

RESTFUL API 中删除操作的设计比较特殊,并不是一味的使用一个 DELETE 就可以解决问题。

归纳起来,删除操作有三个情况,如下

  1. 删除某个资源

  2. 批量删除多个资源

  3. 删除某个资源中的某些属性

其中最好处理的是第一个情况,可以通过 DELETE 直接实现,即直接通过 DELETE 该资源的 URL 的形式,如下

{api}/resource/<resourceID>

而第二和三种情况因为 URL 长度的问题可能无法使用 URL。虽然在 RESTFUL 设计中并没有明确说明 URL 长度限制是多少,但 URL 的长度还是和浏览器,WEBSERVICE(NGINX,IIS,APACHE)有一定的关系,不同的浏览器有着不同的长度限制,同样不同的 WEBSERVICE 有着不同的长度限制,所以直接用 URL 的话难免会存在一定的问题。

先说第三种情况删除某个资源中的某些属性,删除某个资源的某些属性本质是更改该资源的部分属性,应该是一个更新的操作,而非删除了该资源,那么则可以使用 PUT 操作来实现更新,即在 BODY 中附加操作的内容,而 URL 地址是该资源的地址,即

{api}/resource/<resourceID>

再说第二种情况批量删除多个资源,如上面所说,因为 URL 长度问题,如果将多个资源拼接到 URL 中势必会出现问题,那么这时候可以用 POST 操作来实现,在 BODY 中附加操作的内容,而 URL 地址是资源合集的地址,即

{api}/resource/

在实际项目操作中,为了统一好看,我对第二种情况的处理还是使用 DELETE 操作,URL 地址是资源合集的地址,而要操作的内容放在 HEAD 里面,而非 BODY 里面。

--- EOF ---

请注意:这里的内容都是原创,你可以免费阅读,但拒绝所有其他任何形式的转载,谢谢配合。如果你发现文章中有错误,请在下面评论。考虑到网络环境,评论插件很多时候打不开,那可以考虑发邮件给我,邮箱地址在我的博客中很容易找到,非常感谢。

The Copyright of all posts & photos posted in tourcoder.com is belong to tourcoder.com. You can read them for free, but you may not reuse anything therein without my permission.

更多内容