无法更新的资源的 REST 响应代码

REST response code for resources that cannot be updated

我有无法更新的资源(事件)。因此我只允许 Post & Get 操作。 (我没有选择 PUT,因为 eventId 是在服务器端生成的,并且 returned 作为响应的一部分)。

我在输入中已经有了三个字段的组合,可用于标识唯一资源。

鉴于此,如果有人两次发布相同的请求,这就是我所期望的 return

在情况 1 和情况 2 中 return 的正确响应代码应该是什么。

谢谢, 哈里斯

编辑:

由于 409 或 400 都不适合您的情况,也许 422 无法处理的实体

http://www.restpatterns.org/HTTP_Status_Codes/422_-_Unprocessable_Entity


也许 409 冲突 就是您要找的。

https://httpstatuses.com/409

如果您想向客户端发出失败信号 'final' 并且没有请求编辑会更改它,另一个选项是 400 Bad Request.

我个人只在请求语法不合法时才使用 400 - 这里不是这种情况。

如果调用是幂等的,即情况 1,我希望它 return a 200 OK 因为它并没有真正失败,这与更新相同执行 PUT 时具有相同的值。

如果调用不是幂等的,即情况 2,那么即使用户实际上不应该重试调用,我也会期待 409 冲突。那是因为按照你所说的,用户实际上可以发送具有相同标识符的请求,前提是所有其他参数也相同。

此外,但这只是我的直觉,如果用户尝试使用不同的参数来查看不同类型的响应代码,他可以确定资源的当前状态,即使他可能不允许阅读资源。因此,根据您的应用范围,您可能希望返回相同的响应。