Mar*_*era 149 api validation http
什么是最佳HTTP响应代码不报告200(一切正常)但输入错误?
比如,你向服务器提交一些数据,它会回应你的数据是错误的
使用500
看起来更像服务器问题
使用200
警告/错误响应文本是坏的(允许缓存,一切都不好)
使用204
和返回任何东西,可能是好的(但很好支持?)如果请求的路径(脚本)可用,则
使用404
错误在适当的地方
Kee*_*ego 173
我们在制作API时遇到了同样的问题.我们正在寻找相当于一个的HTTP状态代码InvalidArgumentException
.在阅读下面的源文章后,我们最终使用了422 Unprocessable Entity
哪些状态:
422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码是不合适的),并且请求实体的语法是正确的(因此400(错误请求) )状态代码不合适)但无法处理包含的指令.例如,如果XML请求主体包含格式正确(即语法正确)但语义错误的XML指令,则可能发生此错误情况.
来源:https://www.bennadel.com/blog/2434-http-status-codes-for-invalid-data-400-vs-422.htm
esa*_*saj 135
以4(4xx)开头的代码用于客户端错误.也许400(不良请求)可能适合这种情况?http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html中的定义说:
"由于语法错误,服务器无法理解请求.客户端不应该在没有修改的情况下重复请求."
Mob*_*Mob 13
除了RFC规范, 您还可以看到这一点.查看推特和Facebook的回复.
https://developer.twitter.com/en/docs/ads/general/guides/response-codes
http://www.fb-developers.info/tech/fb_dev/faq/general/gen_10.html
409 Conflict
可能是一个可接受的解决方
根据:https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
由于与资源的当前状态冲突,无法完成请求.此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许.响应主体应该包含足够的信息供用户识别冲突的来源.理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题; 但是,这可能是不可能的,也不是必需的.
该文档继续举例:
冲突最有可能发生在响应PUT请求时.例如,如果正在使用版本控制并且包含PUT的实体更改为与早期(第三方)请求所产生的资源冲突的资源,则服务器可能会使用409响应来指示它无法完成请求.在这种情况下,响应实体可能包含由响应Content-Type定义的格式的两个版本之间的差异列表.
在我的例子中,我想通过API将一个字符串(必须是唯一的)输入数据库.在将它添加到数据库之前,我正在检查它是否已经在数据库中.
如果是的话,我会回来的"Error: The string is already in the database", 409
.
我相信这是OP想要的:适用于数据未通过服务器标准的错误代码.
归档时间: |
|
查看次数: |
78677 次 |
最近记录: |