根据JsonAPI规范,为什么禁止批量更新?

时间:2018-05-18 15:23:13

标签: api json-api

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

enter image description here

我需要一个详细的例子,并解释必须禁止批量更新的原因。

1 个答案:

答案 0 :(得分:0)

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

该规范列出了您可能考虑禁止它作为注释的原因之一:

  

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

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

使用relationship links通过POSTDELETE更新关系可以避免此问题。在那种情况下,客户端仅修改特定的关联,而无需接触其他关联。