Zur*_*oen 8 rest revert http-delete
我有一个关于HTTP DELETE和REST的问题.我有资源x.根据x的状态,删除x可以:
我假设HTTP DELETE 必须根据HTTP/REST细节删除资源,而不是将其标记为已删除,例如:在处理HTTP DELETE之后,x上的 GET 必须返回404.这意味着HTTP DELETE不能用于第二种情况.您将如何以RESTful方式模拟此删除行为(包括1和2)?
然后,由于可以恢复某些资源,因此也应该通过REST API实现这一点.您将如何以RESTful方式建模还原行为?
为简单起见,假设x位于http:// company/api/x /上.
您可以使用垃圾桶方法。
DELETE http://company/api/x/
Run Code Online (Sandbox Code Playgroud)
导致 x 被移动到垃圾桶。此时可以访问它,
GET http://company/api/trashcan/x/
Run Code Online (Sandbox Code Playgroud)
如果你想恢复它,然后获取检索到的表示并做
PUT http://company/api/x/
Run Code Online (Sandbox Code Playgroud)
更新:
使用超媒体可以让客户更清楚他们应该做什么。
GET http://company/api/trashcan/x
=>
200 OK
<x-resource>
<description>This is the object I deleted</description>
<link rel="restoreto" href="http://company/api/x/" />
</x-resource>
Run Code Online (Sandbox Code Playgroud)
仔细想了想,PUT 确实是正确的方法。它是不安全的、幂等的,而且您也知道恢复文件的 URI。如果完全符合 PUT 的语义。rel="restoreto" 的替代方法可能是 rel="originallocation"。
RESTful 意味着您可以根据需要使用 POST 执行删除,因为:与基于 SOAP 的 Web 服务不同,RESTful Web 服务没有“官方”标准。
在这种情况下,我会将您的“删除标记”更改为“POST”(实际上是更新而不是删除)。
| 归档时间: |
|
| 查看次数: |
2000 次 |
| 最近记录: |