2016-08-19 35 views
0

我希望由我的一个Web API返回的JSON响应包含业务强制注释的最小字段集。在数据库中发现错误数据的HTTP响应状态代码

哪个HTTP status code适合更好的情况下,一些坏的数据,不尊重合同在db上找到?

目前我们正在使用500,但我们可能需要改进它(也因为在我们的服务前放置的清漆将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" 
    } 
    } 
} 

感谢

+0

我认为如果数据不好,它应该是一个400错误的请求吗? – mituw16

+0

检出这些链接,它们可能有帮助:http://stackoverflow.com/questions/1434315/http-status-code-for-database-is-down和http://stackoverflow.com/questions/3290182/rest-http -status-codes-for-failed-validation-or-invalid-duplicate – d3r1ck

+0

没有请求是正确的,它只是响应是“不好”,因为在分贝上发现了相同的意外数据 –

回答

0

一个500内部服务器错误似乎是不够的在这里说实话的问题,本质上是从服务器端,它不反映任何错误从做客户端。

1

400意味着BAD请求,但没有什么不好的请求,所以不要使用它。

500意味着服务器错误,因为在意外发生的事情 - 代码内爆,银河系崩溃。不好的数据不是任何的原因。

你有一个坏数据的情况,所以你有很多方法可供选择。

第一个问题是您打算如何处理不良数据?

  1. 你可以删除它在这种情况下,你会返回一个204,这意味着该请求是不错,但没有数据发送回。我不会返回404没有数据,因为404意味着端点不存在,而不是数据不存在。

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

无论哪种方式,你不会返回错误的数据,客户端不关心为什么数据不好。所有客户都关心有没有数据。 客户为什么要关心您的数据缺少您认为重要的字段?

您可以采取另一种方法并返回您拥有的数据。底线:决定你如何处理不良数据,不要对客户端承担任何责任。

相关问题