gpt4 book ai didi

REST - 可恢复的 DELETE

转载 作者:行者123 更新时间:2023-12-04 08:15:01 25 4
gpt4 key购买 nike

我有一个关于 HTTP DELETE 和 REST 的问题。我有一个资源 x。根据 x 的状态,删除 x 可以:

  • 永久删除 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/

    导致 x 被移动到垃圾桶。此时可以访问它,
    GET http://company/api/trashcan/x/

    如果你想恢复它,然后获取检索到的表示并做
    PUT http://company/api/x/

    更新:

    使用超媒体可以让客户更清楚他们应该做什么。
    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>

    仔细想了想,PUT 确实是正确的方法。它是不安全的、幂等的,而且您也知道恢复文件的 URI。如果完全符合 PUT 的语义。
    rel="restoreto"的替代方法可能是 rel="originallocation"。

    关于REST - 可恢复的 DELETE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6762567/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com