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

Ale*_*lex 3 api standards http-status-codes

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

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

如果服务发回:

  1. 404 - Not Found
    由于在数据库中找不到数据
  2. 400 - Bad Request
    由于输入请求中的数据无效或存在于数据库中
  3. 200 - OKnull回应
  4. 200 - OK带有错误消息
    在这种情况下,我们可以使用标准错误消息,以及涵盖所有响应的契约200 OK(如下所示)。
 BaseResponse {
  Errors [{
    Message: "Data Not Found"
  }],
  Response: null
 }
Run Code Online (Sandbox Code Playgroud)

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

提前致谢。

Man*_*lon 7

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

如果您遵循 REST API 架构,则应遵循以下准则

400 由于语法不正确,服务器无法理解该请求。客户端不应该在没有修改的情况下重复请求。

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

404 服务器找不到所请求的资源。

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


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