gpt4 book ai didi

rest - PUT 只读实体的适当 HTTP 状态

转载 作者:行者123 更新时间:2023-12-04 15:07:27 28 4
gpt4 key购买 nike

当客户端尝试 PUT 时,适当的 HTTP 响应代码是什么?到 的实体目前只读性质 ?

玩具示例是产品装运。在发货之前,可以更改详细信息(地址、产品、数量)(例如,通过 PUT 请求)。但是,一旦发货,任何 PUT即使请求格式和语法正确,也应该失败。

客户可能不知道货件已发送,因此这不是客户端的“粗心”错误。
400似乎不合适,因为输入格式正确且语法正确。405看起来很合适。在这种情况下,这是一个常见的 react 吗?403似乎暗示授权已被撤销,这可能会产生误导。422似乎很合适,但它的使用似乎 discouraged if you don't provide WebDAV capabilities (我们没有)。500听起来像是有人被电缆绊倒了,尽管我听说一些开发人员/框架在这种情况下使用这种状态。

这种情况有标准做法吗?什么最不可能给 API 用户(开发人员)和最终用户(使用 UI 的人)造成混淆?

最佳答案

我会看405 Method Not Allowed .它是这样定义的:

The 405 (Method Not Allowed) status code indicates that the methodreceived in the request-line is known by the origin server but notsupported by the target resource. The origin server MUST generate anAllow header field in a 405 response containing a list of the targetresource's currently supported methods.


您的服务器完全理解请求,但它不再支持写入。此外,向客户端返回支持的方法列表的要求听起来很干净。
作为额外的奖励,默认情况下 405 响应是可缓存的,这在您的情况下可能是有意义的。

另一个可行的选择是 409 Conflict :

The 409 (Conflict) status code indicates that the request could not becompleted due to a conflict with the current state of the targetresource.


可以说订单改变了状态,以这种方式修改它不再可能。但请注意:

This code is used in situations where the user might beable to resolve the conflict and resubmit the request.


......所以我会倾向于另一个。

关于rest - PUT 只读实体的适当 HTTP 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45929017/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com