如何通过REST API更新文档时确保一致性

时间:2018-06-06 11:25:23

标签: rest api-design

我正在设计一个REST API,它将有两个客户端更新它,可能同时: * Client A将获取文档,花费X分钟处理并修改它,然后将其丢回。 * Client B可能随时提出新文件。

Client B PUT的新文档在Client A处理文档的旧版本时出现问题。在这种情况下,Client A最终会覆盖通过PUT修改旧文档版本所做的更改Client B。我希望Client A放弃处理结果。

为了更好地解释它,这是一个简单(有问题)工作流程的例子:

  1. Client A GET< - 文件版本1
  2. Client B PUT - >文件第2版
  3. Client A PUT - >文件版本1.1
  4. 所需的工作流程:

    1. Client A GET< - 文件版本1
    2. Client B PUT - >文件第2版
    3. Client A PUT - >错误。 Client A删除结果并重新启动
    4. Client A GET< - 文件版本2
    5. Client A PUT - >文件版本2.1
    6. 显然,这可以通过以某种方式对文档进行版本控制来实现。我的问题是,是否存在一些实现它的标准方法(我确信我不是唯一一个有这种问题的方法),或者我应该设计自己的解决方案。

1 个答案:

答案 0 :(得分:1)

您正在寻找RFC 7232。具体来说,您需要If-Unmodified-Since标头或If-Match标头。它们将使客户端A的PUT请求以服务器上未更改的资源为条件。