jef*_*dio 11 rest api-design http
给定以下操作的预期/正确 HTTP 状态代码是什么:
400
)401
)403
)404
)501
)5xx
)资源当前被禁用,从而阻止操作以预期结果完成。用户可以更改资源的状态并重试相同的请求。有关资源为何无法执行所要求的操作的信息将包含在响应正文中。
我的想法是这409 Conflict
将是最好的响应,因为用户可能会更改资源的状态并重新提交请求,但也许有更好的方法表明“您通常允许使用此方法,但资源当前处于状态这会阻止它按预期完成。”
这似乎是互联网上的共识,我在这里看不到更好的了。请参阅此处了解另一个类似的问题
409
此代码用于用户可能能够解决冲突并重新提交请求的情况。 来源
接下来是这个
在响应 PUT 请求时最有可能发生冲突。例如,如果正在使用版本控制,并且正在 PUT 的表示包含对资源的更改,这些更改与早期(第三方)请求所做的更改相冲突
这看起来更像是在客户端构建调用时实体在客户端下方移动,也许假设是客户端在进行调用之前请求允许的操作。如果您实现了这一点,我会说 409 对于您的 API 来说是完全有效的,因为您为客户端提供了仅发出有效请求的能力,除非其他人更改了实体。
显然,您应该保持一致,并记录响应代码及其用法。