在REST API中使用HTTP状态207有哪些适用的方案?

时间:2015-06-01 10:45:54

标签: web-services rest

计划使用http状态207 /多状态作为更新/删除REST API中对象列表的响应。如果一切都成功,我计划回复204,如果它是成功/失败的混合,我计划回复。

这是207的正确用法吗?

http 207常用于什么场景?

2 个答案:

答案 0 :(得分:20)

如果针对多个资源执行POST,PUT,DELETE等破坏性操作,并且针对每个资源的操作没有共同的结果,那么您可以使用207。

例如,

  • 如果您删除了两个资源,并且两者都被删除了,那么您可以期待
  • 如果两个DELETE都被禁止,你会期望403.
  • 如果一个DELETE成功但有一个被禁止,则会收到207。

207状态的更多discussion

答案 1 :(得分:0)

这个问题有点老了,但由于它是在 REST API 中使用 207 Multi-status 的最佳结果之一,我建议另一种情况。

我通常也在 CRUD 操作中使用 207 来触发一些长时间运行的任务。

例如:用于触发长时间重新计算的插入操作的 API 将回复 207 状态,其中包含有关插入的实体 (201 Created + DTO) 和长时间运行的所有信息任务(202 Accepted + 任务令牌)。即使回复应该没有正文(更新或删除请求中的 204 No content),这种方法也很适合。