当 POST 请求不成功且请求正文格式正确时,应返回什么 HTTP 响应代码?
对于成功的 POST 请求,我使用 201 - Created,但没有等效的未创建代码。
我认为要么 400 - 错误的请求,但这实际上会向用户表明请求格式不正确,或者 304 - 未修改。
当出现以下情况时应返回什么 HTTP 响应代码POST
请求未成功且请求正文格式正确?
如果您的意思是请求负载的语法有效,但由于数据无效而无法处理,您可以使用422 https://www.rfc-editor.org/rfc/rfc4918#section-11.2:
11.2. 422 无法处理的实体 https://www.rfc-editor.org/rfc/rfc4918#section-11.2
The 422
(无法处理的实体)状态代码表示服务器
了解请求实体的内容类型(因此415
(不支持的媒体类型)状态代码不合适),并且
请求实体的语法是正确的(因此400
(错误的请求)
状态代码不合适)但无法处理包含的内容
指示。例如,如果 XML
请求正文包含格式正确的(即语法正确的),但是
语义错误的 XML 指令。
请记住在响应有效负载中提供良好的描述,解释有效负载的问题。请参阅RFC 7807 https://www.rfc-editor.org/rfc/rfc7807有关如何报告 HTTP API 中的问题的详细信息。
更新(根据评论)
原因是一个POST
例如,请求失败更多的是业务逻辑错误“账户余额太低,无法提取 5.00 美元”.
对于您所描述的情况comment https://stackoverflow.com/questions/47269601/what-http-response-code-to-use-for-failed-post-request/47269747?noredirect=1#comment87675949_47269747, 403 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.3 or 409 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.8会更合适。
6.5.3. 403 禁忌 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.3
The 403
(禁止)状态码表示服务器理解
请求但拒绝授权。一个服务器希望
公开请求被禁止的原因可以描述
响应负载中的原因(如果有)。 [...]
6.5.8。 409 冲突 https://www.rfc-editor.org/rfc/rfc7231#section-6.5.8
The 409
(冲突)状态码表示请求无法
由于与目标的当前状态冲突而无法完成
资源。此代码用于用户可能会遇到的情况
能够解决冲突并重新提交请求。服务器
应生成包含足够用户信息的有效负载
认识冲突的根源。 [...]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)