http - 通过 REST (RESTful) API 进行批量集合操作

标签 http rest

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

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

有没有人知道实现此目标的最佳实践或惯例的任何信息?

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

显然,如果有必要,我很乐意偏离 RFC,但如果存在这样的约定,我更愿意以传统方式执行此操作。

最佳答案

您可能希望将更改任务本身视为一种资源。所以你实际上是在 PUT-ing 一个对象,它是一个批量数据更新对象。也许它有一个名称、所有者以及需要解析和执行的 CSV、XML 等大块。对于 CSV,您可能还想确定 CSV 数据中表示的对象类型。

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

一旦准备就绪,您就可以轻松添加批量数据更新程序可以处理的不同数据类型,甚至可以在同一任务中混合使用。换句话说,无需为要导入的每种类型的内容在整个应用中复制相同的 API。

这也非常适合后台任务实现。在这种情况下,您可能希望向各个任务对象添加字段,以允许 API 客户端指定他们希望如何收到通知(他们希望您在完成时获取的 URL,或向他们发送电子邮件等) .

关于http - 通过 REST (RESTful) API 进行批量集合操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/306271/

相关文章:

android - 如何在 Android 中使用托管在 Tomcat 上的 RESTFul Web 服务?

java - CORS 工作的 GWT HTTP 请求响应代码 0

http - 用户代理能否在其请求中设置大于零的最大年龄?

java - EntityUtils.toString(entity) 抛出 OutOfMemory 错误

c# - Azure blob 存储 - 获取 block 列表以错误的顺序返回未提交的 block

android - 在移动应用程序上注册帐户

rest - Apache CXF REST 分段上传,编码异常

javascript - 如何将 ng-bind 设置为从 Angular http 返回的值?

javascript - 通过代理发出 XMLHttpRequest?

javascript - AngularJS REST 资源 - 刷新查询