如何在通过RESTAPI更新文档时确保一致性

如何在通过RESTAPI更新文档时确保一致性,rest,api-design,Rest,Api Design,我正在设计一个REST API,可能会有两个客户端同时更新它: *客户端A将获取一个文档,花X分钟处理和修改它,然后将其放回原处。 *客户端B可能随时放置新文档 当Client BPUT的新文档,而Client A正在处理文档的旧版本时,就会出现问题。在这种情况下,客户机A最终将覆盖客户机B所做的更改,方法是放置旧文档的修改版本。我希望客户端A放弃处理结果 为了更好地解释,下面是一个简单(有问题)的工作流示例: 客户端A获取文档版本2 Client APUT->Document version

我正在设计一个REST API,可能会有两个客户端同时更新它: *
客户端A
将获取一个文档,花X分钟处理和修改它,然后将其放回原处。 *
客户端B
可能随时放置新文档

Client B
PUT的新文档,而
Client A
正在处理文档的旧版本时,就会出现问题。在这种情况下,
客户机A
最终将覆盖客户机B所做的更改,方法是放置旧文档的修改版本。我希望
客户端A
放弃处理结果

为了更好地解释,下面是一个简单(有问题)的工作流示例:

  • 客户端A
    获取文档版本2
  • Client A
    PUT->Document version 1.1
  • 所需的工作流程:

  • 客户端A
    获取文档版本2
  • 客户端A
    PUT->错误<代码>客户端A删除结果并重新启动
  • 客户端A
    获取文档版本2.1
  • 显然,这可以通过以某种方式对文档进行版本控制来实现。我的问题是,是否有一些标准的方法来实现这一目标(我相信我不是唯一一个有这种问题的人),或者我应该设计自己的解决方案。

    您正在寻找。具体来说,您需要标题或标题。它们将使客户端A的PUT请求以服务器上的资源不变为条件