【问题标题】:Is Http status code 412 suitable for error based on rules defined in our domainHttp 状态码 412 是否适合基于我们域中定义的规则的错误
【发布时间】:2013-11-29 14:15:05
【问题描述】:

我有一个返回 Voucher 对象的 api 端点。

凭证是从第三方获取的。

我们会检查/验证某些条件,例如过期日期。
因此,如果客户端应用程序请求 /voucher/1234 的凭证,ID 为 1234 的凭证将从第三方检索。

如果过期日期是

我想返回标准 HTTP 错误。

哪个最合适?
我最初以为是 412,但现在我不确定了。

【问题讨论】:

    标签: http rest asp.net-web-api http-status-codes http-status-code-412


    【解决方案1】:

    当服务器不满足请求标头中提供的前提条件之一(If-Match、If-Modified-Since 等)时,使用 HTTP 412。

    非常通用的方法是在无效字段上返回 HTTP 400 + 特定错误消息。

    然而,越来越多的流行 API 开始使用 HTTP 扩展,以便更精细地向客户端提供错误反馈。 Twitter 和 GitHub 使用 WebDAV HTTP 扩展中定义的 HTTP 422 Unprocessable Entity。 HTTP 422 says that :

    422 (Unprocessable Entity) 状态码表示服务器 理解请求实体的内容类型(因此 415(不支持的媒体类型)状态码不合适),并且 请求实体的语法是正确的(因此是 400 (Bad Request) 状态码不合适)但无法处理包含的 指示。例如,如果 XML 请求正文包含格式正确(即语法正确),但是 语义错误的 XML 指令。

    您的服务器了解用户想要做什么并了解数据包含的内容,但它不会让您这样做。所以,Http 422 看起来很适合你。

    【讨论】:

      猜你喜欢
      • 2015-03-14
      • 1970-01-01
      • 2012-05-30
      • 2011-07-19
      • 2011-06-14
      • 1970-01-01
      • 2015-08-27
      • 2013-11-20
      • 1970-01-01
      相关资源
      最近更新 更多