我正在启动REST API来创建Web应用程序。
大多数网站都会告诉您删除向DELETE
之类的URI发出/{resource}/{resource-id}
HTTP请求的资源。我害怕删除一些自我检索以来可能已更新的资源,甚至是错误的资源。
是否可以要求将资源的时间戳与请求一起发送?我没有在任何地方看到它,但我认为它可能非常有用。它会检查并发性并防止删除随机资源,甚至不用以前检索它们。
答案 0 :(得分:6)
将ETag
和If-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
<强>变体:强>
除了ETag
和If-Match
之外,您还可以使用标题Last-Modified
和If-Unmodified-Since
。