【问题标题】:According to JsonAPI specs, why disallow bulk updates?根据 JsonAPI 规范,为什么不允许批量更新?
【发布时间】:2018-10-29 02:06:57
【问题描述】:

我引用了电子书中关于 Json API 设计的通知。他们说

我需要一个详细的示例和说明为什么必须禁止批量更新的原因。

【问题讨论】:

  • 在您引用的文字中是单词:可能不是必须

标签: api json-api


【解决方案1】:

您引用的文字具有误导性。规范要求PATCH请求“要么完全替换关系的每个成员,如果无法找到或访问某些资源,则返回适当的错误响应,或者如果不允许完全替换,则返回403 Forbidden响应由服务器。” (Source) 但这不是您应该考虑禁止替换一对多关系的原因。

该规范列出了您可能认为不允许它作为注释的原因之一:

由于完全替换(对多关系)可能是一个非常危险的操作,服务器可能会选择禁止它。例如,如果服务器没有向客户端提供相关对象的完整列表,并且不希望允许删除客户端未看到的记录,则服务器可能会拒绝完全替换。 (Source)

另一个常见问题是碰撞。让我们假设客户端 A 和 B 请求的资源包括关联对象的完整列表。如果两者都关联另一个对象并因此通过 PATCH 使用完全替换,则第二个请求将覆盖第一个请求,因此 删除第一个请求创建的关系,甚至不知道它。

通过POSTDELETE 使用relationship links 更新关系可避免此问题。在这种情况下,客户端只是修改特定的关联,而不涉及其他关联。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    相关资源
    最近更新 更多