异常
如果是一个不支持的请求或者请求失败,服务必须提供一个异常响应结果,这个异常响应结果必须是一个标准的 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)。
| 字段 | 类型 | 描述 |
|---|---|---|
| status | String | 错误类型,枚举值,如下所示 |
| details | array | 错误详情,必须是数组类型 |
错误类型
使用规范化的错误状态枚举,映射到 HTTP 状态码。
| HTTP | 错误类型 | 描述 |
|---|---|---|
| 400 | INVALID_ARGUMENT | 客户端指定了无效参数。 |
| 400 | FAILED_PRECONDITION | 请求无法在当前系统状态下执行,例如删除非空目录。 |
| 400 | OUT_OF_RANGE | 客户端指定了无效范围。 |
| 401 | UNAUTHENTICATED | 由于 OAuth 令牌丢失、无效或过期,请求未通过身份验证。 |
| 403 | PERMISSION_DENIED | 客户端权限不足。可能的原因包括 OAuth 令牌的覆盖范围不正确、客户端没有权限或者尚未为客户端项目启用 API。 |
| 404 | NOT_FOUND | 找不到指定的资源,或者请求由于未公开的原因(例如白名单)而被拒绝。。 |
| 409 | ABORTED | 并发冲突,例如读取/修改/写入冲突。 |
| 409 | ALREADY_EXISTS | 客户端尝试创建的资源已存在。 |
| 429 | RESOURCE_EXHAUSTED | 资源配额不足或达到速率限制。 |
| 499 | CANCELLED | 请求被客户端取消。 |
| 500 | DATA_LOSS | 出现不可恢复的数据丢失或数据损坏。 |
| 500 | UNKNOWN | 出现未知的服务器错误。通常是服务器错误。 |
| 500 | INTERNAL | 出现未知的服务器错误。通常是服务器错误。 |
| 501 | NOT_IMPLEMENTED | API 方法未通过服务器实现。 |
| 503 | UNAVAILABLE | 服务不可用。通常是服务器已关闭。 |
| 504 | DEADLINE_EXCEEDED | 超出请求时限。 |