Don*_*lor 80 api rest backbone.js
什么是删除多个项目的REST-ful方式?
我的用例是我有一个Backbone Collection,我需要能够一次删除多个项目.选项似乎是:
所有选项都不太理想.
这似乎是REST约定的灰色区域.
Nic*_*nks 74
/records/1;2;3
" - 因此对此的2xx响应可能会导致它们清除其缓存/records/1;2;3
; 不吹扫/records/1
,/records/2
或/records/3
; 代理410响应/records/1;2;3
,或其他从您的观点来看没有意义的事情.records=[1,2,3]
对/delete-requests
)和轮询创建的资源(由指定Location
的响应报头),以找出是否您的申请已被接受,拒绝,正在进行中或已完成.这对于长时间运行的操作很有用.另一种方式是发送PATCH
到列表中的资源请求,/records
,体内都包含资源和行动的清单,对这些资源进行(在你想支持任何格式).这对于快速操作很有用,其中请求的响应代码可以指示操作的结果.在保持REST限制的同时,一切都可以实现,通常答案是将"问题"变成资源,并给它一个URL.
因此,批处理操作(例如在此处删除,或将多个项目发布到列表中,或对大量资源进行相同的编辑)都可以通过创建"批处理操作"列表并将新操作发布到它来处理.
不要忘记,REST不是解决任何问题的唯一方法."REST"只是一种建筑风格,你不具备坚持它(但你失去了上网的一些好处,如果你不这样做).我建议你查看这个HTTP API架构列表,然后选择适合你的那个.如果您选择其他架构,只要让自己意识到自己失去了什么,并根据您的用例做出明智的决定.
对于处理REST Web服务中的批处理操作的模式,这个问题有一些不好的答案?有太多的赞成,但也应该被阅读.
Mar*_*ila 16
如果GET /records?filteringCriteria
返回与条件匹配的所有记录的数组,则DELETE /records?filteringCriteria
可以删除所有此类记录.
在这种情况下,您的问题的答案将是DELETE /records?id=1&id=2&id=3
.
boo*_*oon 14
我认为 Mozilla Storage Service SyncStorage API v1.5 是使用 REST 删除多个记录的好方法。
DELETE https://<endpoint-url>/storage/<collection>
Run Code Online (Sandbox Code Playgroud)
DELETE https://<endpoint-url>/storage/<collection>?ids=<ids>
Run Code Online (Sandbox Code Playgroud)
ids:从集合中删除其 id 在提供的逗号分隔列表中的 BSO。最多可提供 100 个 ID。
DELETE https://<endpoint-url>/storage/<collection>/<id>
Run Code Online (Sandbox Code Playgroud)
http://moz-services-docs.readthedocs.io/en/latest/storage/apis-1.5.html#api-instructions
这似乎是 REST 约定的灰色区域。
是的,到目前为止,我只遇到过一个提到批量操作(例如批量删除)的 REST API 设计指南:google api 设计指南。
本指南提到了创建可以通过使用冒号通过资源关联的“自定义”方法,例如https://service.name/v1/some/resource/name:customVerb
,它还明确提到批处理操作作为用例:
自定义方法可以与资源、集合或服务相关联。它可以接受任意请求并返回任意响应,并且还支持流式请求和响应。[...] 自定义方法应该使用 HTTP POST 动词,因为它具有最灵活的语义 [...] 对于性能关键的方法,提供自定义批处理方法以减少每个请求的开销可能很有用。
因此,您可以根据 google 的 api 指南执行以下操作:
POST /api/path/to/your/collection:batchDelete
Run Code Online (Sandbox Code Playgroud)
...删除您的收藏资源的一堆项目。