无法更新的资源的 REST 响应代码
REST response code for resources that cannot be updated
我有无法更新的资源(事件)。因此我只允许 Post & Get 操作。 (我没有选择 PUT,因为 eventId 是在服务器端生成的,并且 returned 作为响应的一部分)。
我在输入中已经有了三个字段的组合,可用于标识唯一资源。
鉴于此,如果有人两次发布相同的请求,这就是我所期望的 return
- 情况 1:如果唯一字段已经存在于数据库中并且完整的请求是
与上一个完全相同,那么我们就忽略这个请求(因为
资源已经存在)。
- 情况 2:如果唯一字段已存在于数据库中但其他部分
请求不同,然后发送错误响应说它不是
支持。
在情况 1 和情况 2 中 return 的正确响应代码应该是什么。
谢谢,
哈里斯
编辑:
由于 409 或 400 都不适合您的情况,也许 422 无法处理的实体
http://www.restpatterns.org/HTTP_Status_Codes/422_-_Unprocessable_Entity
也许 409 冲突 就是您要找的。
如果您想向客户端发出失败信号 'final' 并且没有请求编辑会更改它,另一个选项是 400 Bad Request.
我个人只在请求语法不合法时才使用 400 - 这里不是这种情况。
如果调用是幂等的,即情况 1,我希望它 return a 200 OK 因为它并没有真正失败,这与更新相同执行 PUT 时具有相同的值。
如果调用不是幂等的,即情况 2,那么即使用户实际上不应该重试调用,我也会期待 409 冲突。那是因为按照你所说的,用户实际上可以发送具有相同标识符的请求,前提是所有其他参数也相同。
此外,但这只是我的直觉,如果用户尝试使用不同的参数来查看不同类型的响应代码,他可以确定资源的当前状态,即使他可能不允许阅读资源。因此,根据您的应用范围,您可能希望返回相同的响应。
我有无法更新的资源(事件)。因此我只允许 Post & Get 操作。 (我没有选择 PUT,因为 eventId 是在服务器端生成的,并且 returned 作为响应的一部分)。
我在输入中已经有了三个字段的组合,可用于标识唯一资源。
鉴于此,如果有人两次发布相同的请求,这就是我所期望的 return
- 情况 1:如果唯一字段已经存在于数据库中并且完整的请求是 与上一个完全相同,那么我们就忽略这个请求(因为 资源已经存在)。
- 情况 2:如果唯一字段已存在于数据库中但其他部分 请求不同,然后发送错误响应说它不是 支持。
在情况 1 和情况 2 中 return 的正确响应代码应该是什么。
谢谢, 哈里斯
编辑:
由于 409 或 400 都不适合您的情况,也许 422 无法处理的实体
http://www.restpatterns.org/HTTP_Status_Codes/422_-_Unprocessable_Entity
也许 409 冲突 就是您要找的。
如果您想向客户端发出失败信号 'final' 并且没有请求编辑会更改它,另一个选项是 400 Bad Request.
我个人只在请求语法不合法时才使用 400 - 这里不是这种情况。
如果调用是幂等的,即情况 1,我希望它 return a 200 OK 因为它并没有真正失败,这与更新相同执行 PUT 时具有相同的值。
如果调用不是幂等的,即情况 2,那么即使用户实际上不应该重试调用,我也会期待 409 冲突。那是因为按照你所说的,用户实际上可以发送具有相同标识符的请求,前提是所有其他参数也相同。
此外,但这只是我的直觉,如果用户尝试使用不同的参数来查看不同类型的响应代码,他可以确定资源的当前状态,即使他可能不允许阅读资源。因此,根据您的应用范围,您可能希望返回相同的响应。