我正在启动一个 REST API 来制作一个 Web 应用程序。
大多数网站都会告诉您删除向DELETE
URI 发出 HTTP 请求的资源,例如/{resource}/{resource-id}
. 我害怕删除一些在我检索后可能已经更新的资源,甚至是错误的资源。
要求将资源的时间戳与请求一起发送可以吗?我没有在任何地方看到它,但我认为它可能非常有用。它将检查并发性并防止删除随机资源,甚至之前检索它们。
我正在启动一个 REST API 来制作一个 Web 应用程序。
大多数网站都会告诉您删除向DELETE
URI 发出 HTTP 请求的资源,例如/{resource}/{resource-id}
. 我害怕删除一些在我检索后可能已经更新的资源,甚至是错误的资源。
要求将资源的时间戳与请求一起发送可以吗?我没有在任何地方看到它,但我认为它可能非常有用。它将检查并发性并防止删除随机资源,甚至之前检索它们。
将 HTTP 标头ETag
与If-Match
您的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
变体:
您还可以使用标头Last-Modified
andIf-Unmodified-Since
代替 and 或附加于ETag
and If-Match
。