http – 通过REST(RESTful)API的批量收集操作

我想要一些关于设计REST API的建议,这将允许客户端有效地向集合添加/删除大量对象。

通过API,客户端需要能够向集合添加项目并从中删除项目,以及操作现有项目。在许多情况下,客户端将要对该集合进行批量更新,例如添加1000个项目和删除500个不同的项目。感觉就像客户端应该能够在与服务器的单个事务中执行此操作,而不需要1000个单独的POST请求和500个DELETE。

有没有人有任何信息的最佳实践或惯例实现这一点?

我目前的想法是,应该能够PUT表示对集合URI的更改的对象,但这似乎与HTTP 1.1 RFC不一致,这似乎暗示在PUT请求中发送的数据应该独立于数据已经解释存在于URI。这意味着客户端将必须一次性发送对集合的新状态的完整描述,这可能远远大于变化,或者甚至比客户端在它们做出请求时知道的更多。

显然,如果有必要,我将很乐意偏离RFC,但是如果这样的约定存在的话,我们倾向于以常规方式这样做。

您可能想将更改任务视为资源本身。所以你真的PUT一个对象,这是一个批量数据更新对象。也许它有一个名称,所有者和CSV,XML等大块,需要解析和执行。在CSV的情况下,您可能还想要识别在CSV数据中表示的对象的类型。

列出作业,添加作业,查看作业的状态,更新作业(可能为了启动/停止它),删除作业(如果它正在运行则停止它)等。这些操作可以轻松地映射到REST API设计。

一旦你有了这个,你可以很容易地添加不同的数据类型,你的批量数据更新器可以处理,甚至可能在同一个任务混合在一起。没有必要为您要导入的每种类型的事物在整个应用程序中重复这个相同的API。换句话说。

这也很容易地适用于后台任务实现。在这种情况下,您可能希望向单个任务对象添加字段,以允许API客户端指定他们想要通知的方式(完成操作后要获取的URL,或向他们发送电子邮件等) 。

http://stackoverflow.com/questions/306271/bulk-collection-manipulation-through-a-rest-restful-api

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:http – 通过REST(RESTful)API的批量收集操作