REST API的并发检查?

Mar*_*oll 3 api rest concurrency

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

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

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

小智 6

使用的HTTP标头ETag,并If-Match与你的DELETE要求.

客户端 GET S中的资源:

GET /things/42
Run Code Online (Sandbox Code Playgroud)

服务器响应:

200 OK
ETag: "foo-bar-baz"
Run Code Online (Sandbox Code Playgroud)

客户想要DELETE的资源:

DELETE /things/42
If-Match: "foo-bar-baz"
Run Code Online (Sandbox Code Playgroud)

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

410 Gone
Run Code Online (Sandbox Code Playgroud)

案例2:事情42被改变了,与之不符ETag: "foo-bar-baz".它没有删除,服务器响应:

409 Conflict
Run Code Online (Sandbox Code Playgroud)

变体:

您也可以使用标题Last-Modified,If-Unmodified-Since而不是ETagIf-Match.

请参阅超文本传输​​协议(HTTP)状态代码注册表.