【发布时间】:2011-01-26 04:02:22
【问题描述】:
在wiki article for REST 表示如果您使用http://example.com/resourcesDELETE,则表示您正在删除整个集合。
如果您使用http://example.com/resources/7HOU57YDELETE,则表示您正在删除该元素。
我正在做一个网站,注意不是网络服务。
我有一个列表,列表中的每个项目都有 1 个复选框。一旦我选择了多个要删除的项目,我将允许用户按下一个名为 DELETE SELECTION 的按钮。如果用户按下按钮,会弹出一个 js 对话框,要求用户确认删除。如果用户确认,则删除所有项目。
那么我应该如何满足以 RESTFUL 方式删除多个项目?
注意,目前对于网页中的 DELETE,我所做的是我使用 FORM 标记和 POST 作为操作,但包含一个 _method,其值为 DELETE,因为this is what was indicated by others in SO on how to do RESTful delete for webpage。
【问题讨论】:
-
以原子方式执行这些删除是否至关重要?如果第 31 条不能删除,你真的要撤销前 30 条的删除吗?
-
@darrelmiller 好问题。我认为如果以原子方式执行删除,效率会降低。因此,我倾向于从表名 WHERE ID IN ({list of ids}) 中删除。如果有人可以向我指出这是一个好主意还是纠正我。那将不胜感激。如果第 21 项被删除,我也不需要前 20 项的反向删除。如果有人可以向我展示我需要反转的方法与我不需要反转的方法的区别,我再次感激不尽
-
注意:“IN”子句可能有限制;例如,在 Oracle 中,您最多可以放置 1000 个 id。
-
Google 的 API 设计指南提供了一种在 REST API 中创建自定义(批处理)操作的解决方案,请在此处查看我的答案:stackoverflow.com/a/53264372/2477619
标签: rest