在数据库中找不到数据时的 Http 状态代码

Http status code when data not found in Database

我正在尝试了解在以下用例中使用哪个 Http 状态代码

  1. 用户尝试在端点上使用输入 ID 执行 GET
  2. 请求的数据在数据库中不可用。

服务是否应该发回:

  1. 404 - Not Found
    由于数据库中未找到数据
  2. 400 - Bad Request
    由于输入请求中的数据无效或存在于 db
  3. 200 - OK 响应 null
  4. 200 - OK 有错误信息
    在这种情况下,我们可以使用标准错误消息,以及跨越所有 200 OK 响应的合同(如下所示)。
 BaseResponse {
  Errors [{
    Message: "Data Not Found"
  }],
  Response: null
 }

遵循哪种正确(或标准)方法?

提前致谢。

Which is the right (or standard) approach to follow?

如果您遵循 REST API 架构,您应该遵循 these guidelines:

400 The request could not be understood by the server due to incorrect syntax. The client SHOULD NOT repeat the request without modifications.

这意味着您收到了错误的请求数据,例如当您只需要数字 ID 时却收到了字母数字格式的 ID。通常它指的是错误的输入格式或安全检查(例如具有 maxLength 的输入数组)

404 The server can not find the requested resource.

ID格式有效,在数据源中找不到资源。


如果您不遵循任何标准架构,您应该定义您希望如何管理这些案例并与团队和客户分享您的想法。
在许多遗留应用程序中,带有 errors 字段的 HTTP 状态 200 非常常见,因为 very-old 客户端不太擅长管理错误。