REST API的并发检查?

时间:2012-11-06 13:03:02

标签: api rest concurrency

我正在启动REST API来创建Web应用程序。

大多数网站都会告诉您删除向DELETE之类的URI发出/{resource}/{resource-id} HTTP请求的资源。我害怕删除一些自我检索以来可能已更新的资源,甚至是错误的资源。

是否可以要求将资源的时间戳与请求一起发送?我没有在任何地方看到它,但我认为它可能非常有用。它会检查并发性并防止删除随机资源,甚至不用以前检索它们。

1 个答案:

答案 0 :(得分:6)

ETagIf-Match的HTTP标头与DELETE请求一起使用。

客户端 GET是资源:

GET /things/42

服务器响应:

200 OK
ETag: "foo-bar-baz"

客户希望DELETE资源:

DELETE /things/42
If-Match: "foo-bar-baz"

案例1:事情42没有改变,可以删除。 服务器响应:

410 Gone

案例2:事情42已更改且与ETag: "foo-bar-baz"不匹配。 已删除,服务器请求:

409 Conflict

<强>变体:

除了ETagIf-Match之外,您还可以使用标题Last-ModifiedIf-Unmodified-Since

请参阅Hypertext Transfer Protocol (HTTP) Status Code Registry