PUT请求是否应该用于删除资源?

时间:2015-03-13 22:48:50

标签: rest http put

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

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?或者有第三种选择吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

希望它可以帮到你, 亨利

相关问题