应该使用 PUT 请求来删除资源吗?
Should PUT request be used to delete a resource?
我有一个不知道如何处理的情况。我有一个资源有一个标志 "undeniable." 拒绝 post,将从数据库中删除它,所以使用
DELETE /v1/posts/post-id-here
会很好;这样 undeniable post 就会被 404 忽略。但是我的 undeniable post 会计算它被拒绝的次数,所以我认为这会破坏 DELETE 的目的。这就是为什么我正朝着 PUT 请求前进,但我找不到关于在 PUT 请求上删除资源的有效性的任何地方。我在想类似以下的事情:
PUT /v1/posts/post-id-here/deny
这将删除 post 或增加计数器,两者都返回 200 OK。有效吗?或者我应该尝试在客户端将它们分开,其中不可否认的 posts 输出 PUT url 而可否认的输出 DELETE url;如果在 undeniable one 上调用 DELETE,是否会返回 404?还是有第三种选择?
方法PUT
用于更新资源的完整状态。我认为这不完全是您想要做的。我宁愿看到在资源 /v1/posts/post-id-here
上使用方法 POST
。这对应于取消拒绝 post 的操作。据我了解,此类操作将执行以下操作:
- 如果
之前的值是 false
,则将标志 undeniable
设置为 true
- 增加一个计数器(例如一个字段
undenyCounter
)
还有一种方法 PATCH
允许部分更新资源状态,但我认为这正是您的用例,因为您想要增加一个字段...
最后,使用动作作为路径参数并不是真正的 RESTful ;-) 您可以查看此问题以了解有关如何处理此问题的更多详细信息:。
希望对你有帮助,
蒂埃里
我有一个不知道如何处理的情况。我有一个资源有一个标志 "undeniable." 拒绝 post,将从数据库中删除它,所以使用
DELETE /v1/posts/post-id-here
会很好;这样 undeniable post 就会被 404 忽略。但是我的 undeniable post 会计算它被拒绝的次数,所以我认为这会破坏 DELETE 的目的。这就是为什么我正朝着 PUT 请求前进,但我找不到关于在 PUT 请求上删除资源的有效性的任何地方。我在想类似以下的事情:
PUT /v1/posts/post-id-here/deny
这将删除 post 或增加计数器,两者都返回 200 OK。有效吗?或者我应该尝试在客户端将它们分开,其中不可否认的 posts 输出 PUT url 而可否认的输出 DELETE url;如果在 undeniable one 上调用 DELETE,是否会返回 404?还是有第三种选择?
方法PUT
用于更新资源的完整状态。我认为这不完全是您想要做的。我宁愿看到在资源 /v1/posts/post-id-here
上使用方法 POST
。这对应于取消拒绝 post 的操作。据我了解,此类操作将执行以下操作:
- 如果 之前的值是
- 增加一个计数器(例如一个字段
undenyCounter
)
false
,则将标志 undeniable
设置为 true
还有一种方法 PATCH
允许部分更新资源状态,但我认为这正是您的用例,因为您想要增加一个字段...
最后,使用动作作为路径参数并不是真正的 RESTful ;-) 您可以查看此问题以了解有关如何处理此问题的更多详细信息:
希望对你有帮助, 蒂埃里