Skip to content

异常

如果是一个不支持的请求或者请求失败,服务必须提供一个异常响应结果,这个异常响应结果必须是一个标准的 HTTP 错误码

错误响应示例

错误响应信息必须使用 error 字段,例如:

异常响应头

text
HTTP/1.1 400 Bad Request
Content-Type: application/json

异常响应体

json
{
  "error": {
    "status": "INVALID_ARGUMENT",
    "details": [
     {
      "field": "password",
      "description": "password 字段缺失"
     }
    ]
  }
}

注:这种错误响应格式是 Google AIP (API Improvement Proposals) RPC 风格融合,参考 Error handling (AIP-193)

字段类型描述
statusString错误类型,枚举值,如下所示
detailsarray错误详情,必须是数组类型

错误类型

使用规范化的错误状态枚举,映射到 HTTP 状态码。

HTTP错误类型描述
400INVALID_ARGUMENT客户端指定了无效参数。
400FAILED_PRECONDITION请求无法在当前系统状态下执行,例如删除非空目录。
400OUT_OF_RANGE客户端指定了无效范围。
401UNAUTHENTICATED由于 OAuth 令牌丢失、无效或过期,请求未通过身份验证。
403PERMISSION_DENIED客户端权限不足。可能的原因包括 OAuth 令牌的覆盖范围不正确、客户端没有权限或者尚未为客户端项目启用 API。
404NOT_FOUND找不到指定的资源,或者请求由于未公开的原因(例如白名单)而被拒绝。。
409ABORTED并发冲突,例如读取/修改/写入冲突。
409ALREADY_EXISTS客户端尝试创建的资源已存在。
429RESOURCE_EXHAUSTED资源配额不足或达到速率限制。
499CANCELLED请求被客户端取消。
500DATA_LOSS出现不可恢复的数据丢失或数据损坏。
500UNKNOWN出现未知的服务器错误。通常是服务器错误。
500INTERNAL出现未知的服务器错误。通常是服务器错误。
501NOT_IMPLEMENTEDAPI 方法未通过服务器实现。
503UNAVAILABLE服务不可用。通常是服务器已关闭。
504DEADLINE_EXCEEDED超出请求时限。

基于 VitePress 构建