Mat*_*kel 11 validation http http-status-codes
我有一项服务,其中必须检查一些验证规则,然后才能进行特定的操作.
例如,如果未满足所有验证规则,则客户端不应生成可打印的报告.
但是,单个客户端可能没有所有必需的信息(用户可能只能访问用于确定验证成功的数据子集),因此必须将请求发送到服务器:基本上"是" thing在start和之间有效finish."
响应将是某种表示VALID: FEEL FREE TO CONTINUE可以呈现给用户的令牌,或者是验证失败原因的列表.
很明显,成功的验证将返回一个200 OK.但我不认为成功状态代码适合于验证失败.我倾向于a 409 Conflict,但我只是用它来拒绝PUT或者POST.是否有效(窃笑)以a表示验证失败409,或者有更好的方法吗?
注意:执行的操作不是在服务器上执行的,因此403在禁止操作的情况下跳过此检查,只是尝试操作不是一个选项.
Dam*_*ver 23
您已向服务器发送请求以执行验证.它已成功执行所述验证.从HTTP的角度来看,请求已经很好地形成并由服务器正确处理.
所以我要说返回任何HTTP错误代码都是不正确的.
这个答案继续收到downvotes,我不完全确定为什么(没有一个downvoters似乎留下任何评论).通过与OP的大量来回,我们确定此请求/响应的整个要点是执行验证.服务器收到请求,它执行了请求执行的验证,并将验证过程的结果返回给调用者.
发送此请求的客户端完全没有问题.
服务器理解请求.
请求有效(从HTTP角度来看).
服务器可以处理请求.
服务器执行了100%的活动,并返回处理请求时生成的结果.
这就是为什么,正如我所说,我不相信HTTP错误代码是合适的.
即假设服务器公开了一个验证电子邮件地址的端点(对于您希望表示可以执行验证的任何特定形式).它收到一条请求"验证abc@invalid.org"并发出回复说"我查看了这个电子邮件地址,我希望您告诉用户我无法获得有效的DNS响应无效.ORG".如果人们不认为这里的回答是正确的,我很乐意理解他们的推理.
use*_*702 10
虽然它仍然在提议的标准中定义,但是处于422 Unprocessable Entity适当的状态.
422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码是不合适的),并且请求实体的语法是正确的(因此400(错误请求) )状态代码不合适)但无法处理包含的指令.
例如,如果XML请求主体包含格式正确(即语法正确)但语义错误的XML指令,则可能发生此错误情况.
参考文献: