【问题标题】:Should PUT request be used to delete a resource?是否应该使用 PUT 请求来删除资源?
【发布时间】:2015-03-13 22:48:50
【问题描述】:

我有一种情况,我不知道如何管理它。我有一个带有“不可否认”标志的资源。拒绝帖子,会将其从数据库中删除,因此使用

DELETE /v1/posts/post-id-here

本来就好了;这样,不可否认的帖子就会被 404 忽略。但是我不可否认的帖子会有一个计数器,说明它被拒绝了多少次,所以我认为这会扼杀 DELETE 的目的。这就是为什么我正朝着 PUT 请求前进,但我找不到任何关于在 PUT 请求中删除资源的有效性的信息。我在想类似以下的事情:

PUT /v1/posts/post-id-here/deny

这将删除帖子或增加计数器,两者都返回 200 OK。它有效吗?或者我应该尝试在客户端将它们分开,不可否认的帖子输出 PUT url,而可否认的帖子输出 DELETE url;如果 DELETE 在不可否认的一个上被调用, 404 会被返回?还是有第三种选择?

【问题讨论】:

    标签: rest http put


    【解决方案1】:

    方法PUT用于更新资源的完整状态。我认为这不完全是你想要做的。我宁愿看到在资源/v1/posts/post-id-here 上使用方法POST。这对应于不否认帖子的动作。据我了解,此类操作将执行以下操作:

    • 如果之前的值是false,则将标志undeniable 设置为true
    • 增加一个计数器(例如字段undenyCounter

    还有PATCH 方法允许部分更新资源状态,但我认为这正是您的用例,因为您想增加一个字段...

    最后,使用动作作为路径参数并不是真正的 RESTful ;-) 您可以查看此问题以了解有关如何处理此问题的更多详细信息:How to Update a REST Resource Collection

    希望对你有帮助 蒂埃里

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多