我有一种情况,我不知道如何管理它。我有一个有旗帜的资源"不可否认。"拒绝发布帖子会将其从数据库中删除,因此使用
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?或者有第三种选择吗?
答案 0 :(得分:1)
方法PUT
用于更新资源的完整状态。我认为这不是你想要做的。我宁愿在资源POST
上看到使用方法/v1/posts/post-id-here
。这对应于undenying帖子的行为。据我了解,此类行动将执行以下操作:
undeniable
的值为true
,则将其设置为false
undenyCounter
)还有方法PATCH
允许部分更新资源状态,但我认为这正是你的用例,因为你想增加一个字段......
要完成,使用操作作为路径参数并不是真正的RESTful ;-)您可以查看此问题以获取有关如何处理此问题的更多详细信息:How to Update a REST Resource Collection。
希望它可以帮到你, 亨利