TER*_*ytE 37 rest web-services http http-status-codes http-status-code-412
我不清楚你何时应该而且不应该返回HTTP 412:Precondition Failed,Web服务错误?我正在考虑在验证数据时使用它.例如,如果客户端POST的XML数据和该数据缺少必需的数据元素,则使用412和错误描述进行响应.
这与使用HTTP 412响应的精神一致,还是应该使用其他东西(例如,另一个http错误代码或Web应用程序异常)?
joe*_*ohn 58
如果查看RFC 2616,您会看到许多可用于将条件应用于请求的请求标头:
If-Match
If-Modified-Since
If-None-Match
If-Range
If-Unmodified-Since
Run Code Online (Sandbox Code Playgroud)
这些标头包含"前置条件",允许客户端告知服务器仅在满足某些条件时才完成请求.例如,您使用PUT请求来更新资源的状态,但是PUT如果资源自最近以来未被其他人修改,您只希望对其进行操作GET.
412当这些前提条件失败时,通常使用响应状态代码(Precondition Failed).
您的示例听起来像一个无效的请求(即客户端提交的数据由于缺少值而无效).400在这里IMO的状态代码(错误请求)更合适.
Jul*_*hke 11
412被保留用于请求是有条件的情况,并且不满足条件.
对于您的用例,422 Unprocessable Entity是一个很好的匹配.
您最好的选择是避免使用412.实际上,我使用的大多数Web服务都会发送400代码(错误请求).许多框架也内置了对400的支持,您的客户将会欣赏更常见的错误代码.通常,特别是对于REST接口,返回带有描述的简单"消息"或"错误"元素.