Kel*_*vin 362
根据规范,状态422似乎最合适.
422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码是不合适的),并且请求实体的语法是正确的(因此400(错误请求) )状态代码不合适)但无法处理包含的指令.例如,如果XML请求主体包含格式正确(即语法正确)但语义错误的XML指令,则可能发生此错误情况.
他们声称格式错误的xml是一个错误语法的例子(调用400).格式错误的查询字符串似乎与此类似,因此400似乎不适合缺少参数的格式良好的查询字符串.
UPDATE @DavidV正确地指出此规范适用于WebDAV,而不是核心HTTP.但是一些流行的非WebDAV API无论如何都使用422,因为缺少更好的状态代码(参见本文).
Ger*_*der 168
我不确定是否有固定标准,但我会使用400 Bad Request:
由于语法格式错误,服务器无法理解请求.客户端不应该在没有修改的情况下重复请求.
Dan*_*llo 30
当使用webHttpBinding时,.NET中的WCF API通过返回HTTP 404"未找到端点"错误来处理缺少的参数.
404 Not Found如果您将Web服务方法名称与其参数签名一起考虑,则可能有意义.也就是说,如果您公开Web服务方法LoginUser(string, string)并请求LoginUser(string),则找不到后者.
基本上这意味着无法找到您正在调用的Web服务方法以及您指定的参数签名.
10.4.5 404未找到
服务器未找到与Request-URI匹配的任何内容.没有说明该病症是暂时的还是永久性的.
的400 Bad Request,因为格特建议,仍然是一个有效的响应代码,但我认为这是通常用于指示下级的问题.它可以很容易地被解释为格式错误的HTTP请求,可能缺少或无效的HTTP标头,或类似的.
10.4.1 400错误请求
由于语法格式错误,服务器无法理解请求.客户端不应该在没有修改的情况下重复请求.
在我们的一个API项目中,我们决定将409状态设置为某个请求,因为缺少参数,我们无法将其完全填充为100%.
HTTP状态代码"409 Conflict"对我们来说是一个很好的尝试,因为它的定义需要包含足够的信息以便用户识别冲突的来源.
因此,在400或404之类的其他响应中,我们选择409强制需要查看请求中的某些注释,这有助于设置新的正确请求.
我们的情况是特别的,因为如果请求不完全正确,我们需要发送一些数据,我们需要强制客户端查看消息并了解请求中的错误.
一般来说,如果我们只有一些缺失的参数,我们会得到一个400和一个缺失参数数组.但是当我们需要发送更多信息时,比如特定的案例信息,我们希望更加确定客户会处理它,我们发送409
我通常会选择422(不可处理的实体),如果所需参数中的某些内容与API端点所需的内容不匹配(如密码太短),但对于缺少的参数,我会选择406(不可接受).
| 归档时间: |
|
| 查看次数: |
200642 次 |
| 最近记录: |