HTTP响应状态代码,用于在DB上找到的错误数据

时间:2016-08-19 12:10:25

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

我希望我的一个Web API返回的JSON响应包含业务注释为必需的最小字段集。

哪些HTTP status code更适合以防在数据库中找到一些不遵守合同的错误数据?

目前我们正在使用500但我们可能需要对其进行改进(也因为Varnish放在我们的服务之前会将500转换为503 Service Unavailable)。

示例:

{
  "id": "123",
  "message": "500 - Exception during request processing. Cause: subtitles is a required field of class Movie and cannot be empty",
  "_links": {
    "self": {
      "href": "/products/movies/123"
    }
  }
}

由于

2 个答案:

答案 0 :(得分:1)

400表示BAD请求,但请求没有任何不良,所以不要使用它。

500表示服务器错误,因为发生了意外事件 - 代码内爆,星系崩溃。不良数据不是其中任何原因。

您遇到了错误数据,因此您可以使用多种方法。

第一个问题是你打算怎么处理坏数据?

  1. 您可以删除它,在这种情况下,您将返回204,这意味着请求没有问题,但没有数据要发回。我不会返回404没有数据,因为404表示端点不存在,不存在数据。

  2. 当有人修复它时,你可以将它从主数据库中移出到临时数据中。

  3. 无论哪种方式,您都不会返回错误数据,客户端也不关心数据为何坏。所有客户都关心的是否有任何数据。 客户为什么要关心您的数据缺少您认为重要的字段?

    您可以采取其他方法并返回您拥有的数据。

    底线:决定如何处理不良数据,不要对客户承担任何责任。

答案 1 :(得分:0)

500内部服务器错误在这里似乎足够诚实,因为问题主要来自服务器端,并且它没有反映客户端的任何错误操作。