设计RESTful API的delete动作的时候如果要一次请求删除多个条目应该如何设计?

如果是需要删除一个条目,可以直接将需要删除的条目的id放进url里面,比如http://example.com/posts/2016,但是如果需要再一次请求里面删除多个条目,应该如何设计比较合理呢?我现在想到的是以下两种方法:

  1. 用逗号分隔放进url里面:http://example.com/posts/2016,2017

  2. 将需要删除的一系列id放进请求体里面,但是似乎没有这样的标准。

想知道大家是如何设计的呢?

阅读 15.2k
3 个回答

你这个方法是可以的,不过不属于标准的DELETE RESTful请求。当然有一些框架是允许delete伴随body发送的,这样你可以把所有的IDs一次放进去然后发送DELETE请求。 另外一种写法是分成2步完成,第一步发送POST请求,集合所有要删除的IDs然后返回一个header,然后在利用这个header调用DELETE请求。具体步骤如下:

发送POST请求,集中所有的IDs (可以存到Redis或者普通数据库)
http://example.com/posts/deletes

成功后可以返回一个唯一的头文件:

HTTP/1.1 201 created, and a Location header to:
http://example.com/posts/deletes/KJHJS675

然后可以利用Ajax直接发送DELETE请求:
DELETE http://example.com/posts/deletes/KJHJS675

这样就可以在不暴露IDs的情况下更加安全的删除相关条目。

hash或者json

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进