我正在设计一个REST API,它将有两个客户端更新它,可能同时:
* Client A
将获取文档,花费X分钟处理并修改它,然后将其丢回。
* Client B
可能随时提出新文件。
当Client B
PUT的新文档在Client A
处理文档的旧版本时出现问题。在这种情况下,Client A
最终会覆盖通过PUT修改旧文档版本所做的更改Client B
。我希望Client A
放弃处理结果。
为了更好地解释它,这是一个简单(有问题)工作流程的例子:
Client A
GET< - 文件版本1 Client B
PUT - >文件第2版Client A
PUT - >文件版本1.1 所需的工作流程:
Client A
GET< - 文件版本1 Client B
PUT - >文件第2版Client A
PUT - >错误。 Client A
删除结果并重新启动Client A
GET< - 文件版本2 Client A
PUT - >文件版本2.1 显然,这可以通过以某种方式对文档进行版本控制来实现。我的问题是,是否存在一些实现它的标准方法(我确信我不是唯一一个有这种问题的方法),或者我应该设计自己的解决方案。
答案 0 :(得分:1)
您正在寻找RFC 7232。具体来说,您需要If-Unmodified-Since标头或If-Match标头。它们将使客户端A的PUT请求以服务器上未更改的资源为条件。