我希望我的一个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"
}
}
}
由于
答案 0 :(得分:1)
400表示BAD请求,但请求没有任何不良,所以不要使用它。
500表示服务器错误,因为发生了意外事件 - 代码内爆,星系崩溃。不良数据不是其中任何原因。
您遇到了错误数据,因此您可以使用多种方法。
第一个问题是你打算怎么处理坏数据?
您可以删除它,在这种情况下,您将返回204,这意味着请求没有问题,但没有数据要发回。我不会返回404没有数据,因为404表示端点不存在,不存在数据。
当有人修复它时,你可以将它从主数据库中移出到临时数据中。
无论哪种方式,您都不会返回错误数据,客户端也不关心数据为何坏。所有客户都关心的是否有任何数据。 客户为什么要关心您的数据缺少您认为重要的字段?
您可以采取其他方法并返回您拥有的数据。
底线:决定如何处理不良数据,不要对客户承担任何责任。
答案 1 :(得分:0)
500内部服务器错误在这里似乎足够诚实,因为问题主要来自服务器端,并且它没有反映客户端的任何错误操作。