假设我的服务器有一组员工资源。此外,假设客户端应用程序使用此员工资源集合来创建其他资源,或者为了简单起见,假设我想从客户端应用程序更新整个员工集合。
如果我的客户端应用程序与服务器不同步,一些员工资源已从服务器中删除,然后客户端应用程序尝试更新大量员工,例如 100,000 或一些较大的数量,会发生什么情况。这笔交易应该怎么办?
交易应该处理好员工并忽略缺失的员工,还是应该整个交易失败并通知客户失败的原因?
假设我的服务器有一组员工资源。此外,假设客户端应用程序使用此员工资源集合来创建其他资源,或者为了简单起见,假设我想从客户端应用程序更新整个员工集合。
如果我的客户端应用程序与服务器不同步,一些员工资源已从服务器中删除,然后客户端应用程序尝试更新大量员工,例如 100,000 或一些较大的数量,会发生什么情况。这笔交易应该怎么办?
交易应该处理好员工并忽略缺失的员工,还是应该整个交易失败并通知客户失败的原因?
有很多选择。
410 Gone
可用于表示“404 曾经是资源,将永远不会再出现”,用于通知某些内容已被删除。收到 410 的客户端然后可以采取行动。
您还可以使用 ETags 机制,它提供了另一个并发流程。每个资源都应该有一个 ETag,服务器可以使用标头If-None-Match
和代码412 Precondition Failed
来解决如何通知客户端有关冲突的问题。
您可以忽略丢失的那些并使用Warning
可以包含更多数据的标头通知客户端。
WebDAV(扩展了 HTTP)支持批处理操作并支持返回多个状态码。它用于具有类似并发问题的 HTTP 文件系统。
避免在 JSON 响应中重复可以使用标头和状态代码表达的内容。消息正文应仅包含有关资源的信息,而不是有关事务的信息。