【发布时间】:2020-03-05 03:37:33
【问题描述】:
假设您有一个处于“已完成”状态的资源并且任何人都不允许更新它(全部或部分),如果有人尝试更新它,返回的正确 HTTP 状态代码应该是什么? 400、403、409 还是其他?
【问题讨论】:
标签: rest patch put http-status-codes
假设您有一个处于“已完成”状态的资源并且任何人都不允许更新它(全部或部分),如果有人尝试更新它,返回的正确 HTTP 状态代码应该是什么? 400、403、409 还是其他?
【问题讨论】:
标签: rest patch put http-status-codes
405 Method Not Allowed 是一个有趣的可能性
405 (Method Not Allowed) 状态码表示请求行中收到的方法是源服务器已知的,但目标资源不支持。源服务器必须在 405 响应中生成一个 Allow 标头字段,其中包含目标资源当前支持的方法列表。
“当前支持的方法”意味着资源的允许方法集可以随着时间的推移而发展。所以我认为这段代码对于处于不支持 PUT/PATCH 状态的资源来说是令人满意的。
403 Forbidden 也是一个令人满意的选择。
403(Forbidden)状态码表示服务器理解请求但拒绝授权。
【讨论】:
The request could not be completed due to a conflict with the current state of the target resource,它更好地描述了我的情况 + 我已经在使用 403 进行授权,更愿意区分它