Restful API - 带有单个或所有错误的 JSON 响应

use*_*268 7 rest error-handling json

我当前的项目是一个 Restful API,它验证 POST 请求以创建新用户,并且可能会发生多个错误(具有 HTTP 状态):

  1. 未设置用户名(400 BadRequest)
  2. 用户名已被占用(409 冲突)
  3. 服务器无法建立数据库连接(500内部服务器错误)
  4. ...

我应该立即发回这样的 JSON 响应吗

{
    "status": 400,
    "Message": "No username is set"
}
Run Code Online (Sandbox Code Playgroud)

如果检测到错误,或者如果我累积所有错误应该更好,如下所示:

{
    "status": <HTTP STATUS CODE>,
    "errors": [
        {"message": "Username is not set."},
        {"message": "Can't access the database."}
    ]
}
Run Code Online (Sandbox Code Playgroud)

最后一种方法不需要多个请求来发送有效负载。但是,如果未设置用户名(400 错误请求)或服务器无法访问数据库(500 内部服务器错误),应该使用哪个状态代码?

Jos*_*nez 4

我认为,如果您预见到一个请求中需要多个错误,那么第二个 JSON(具有多个错误)是首选。进行多个错误响应的另一个好处是,作为服务的用户,如果我收到多个错误,我可以一次解决所有错误,而不是在收到错误时一次解决一个错误。