以下部分分别描述 v2 和 v1 资源方法的错误模型。
v2资源错误模型
默认情况下,资源方法会返回 200 状态。当请求失败时,Open Cloud 返回标准错误代码。所有错误响应的格式都相同,包括:
- code - 代表 HTTP 状态代验证码。
- message - 一个解释错误的消息。
- details - 包含更多与错误相关的信息的对象。
示例错误
{
"code": "INVALID_ARGUMENT",
"message": "The provided filter is invalid.",
"details": [
{
...
}
]
}
代码
下表描述了 code 的可能值。
代码 | HTTP 状态 | 描述 |
---|---|---|
INVALID_ARGUMENT | 400 | 您传递了无效的参数,例如无效的 universeId 。您还可能缺少或无效的头部,例如 Content-Length 和 Content-Type 。 |
PERMISSION_DENIED | 403 | 您的请求没有足够的权限或范围来执行操作。 |
NOT_FOUND | 404 | 系统无法找到指定的资源,例如数据存储库入口。 |
ABORTED | 409 | 操作被中止。 |
RESOURCE_EXHAUSTED | 429 | 您没有足够的配额来执行操作,通常是因为发送了太多请求。 |
CANCELLED | 499 | 系统终止请求,通常是由于客户端超时。 |
INTERNAL | 500 | 内部服务器错误,通常由服务器错误引起。 |
NOT_IMPLEMENTED | 501 | 服务器没有实现 API 方法。 |
UNAVAILABLE | 503 | 服务不可用,通常在服务器停止运行时返回。 |
v1资源错误模型
所有错误响应都有相同的、标准格式,包括:
- 一个 error 字段,这是一种高级原因,适用于所有开放云端点。
- 一种说明性错误 message , 进一步解释错误。
- 一个 errorDetails 对象,涵盖每个 API 特定的错误的更多信息。
要分析错误的根源,请参阅 error 字段和 errorDetails 字段的值。使用 message 字段作为错误处理的补充,因为有时它可能不会涵盖与 errorDetails 字段相同的细节水平。
示例标准数据存储错误响应
{
"error": "INVALID_ARGUMENT",
"message": "Invalid cursor.",
"errorDetails": [
{
"errorDetailType": "DatastoreErrorInfo",
"datastoreErrorCode": "InvalidCursor"
}
]
}
示例错误响应显示高级开放云 为 ,错误 为 ,特定于 数据存储 的 为 。从响应的 error 和 datastoreErrorCode 字段中,你可以理解到你传递了一个无效的鼠标参数,导致了错误。然后,您可以修正鼠标参数以解决问题。
所有订阅的数据存储错误响应的格式相同,包括:
示例订阅数据存储错误响应
{
"code": "INVALID_ARGUMENT",
"message": "Invalid cursor."
}
code 将包含高级错误的字符串,而 message 将包含与错误相关的特定细节
代码
参考以下表对所有高级开放云错误进行总结。
HTTP 状态代码 | 错误 | 描述 |
---|---|---|
400 | 无效_参数 | 您传递了无效的参数,例如无效的 universeId 。您还可能缺少或无效的头部,例如 Content-Length 和 Content-Type 。 |
403 | 不足_范围 | 请求需要比提供的访问代币提供更高的权限。 |
403 | 权限被拒绝 | 您的请求没有足够的范围来执行操作。 |
404 | 未找到 | 系统无法找到指定的资源,例如数据存商店。 |
409 | 已取消 | 由于冲突,操作被中止了,例如发布不属于宇宙的地点。 |
429 | 资源_已耗尽 | 您没有足够的配额来执行操作,通常是因为发送了太多请求。 |
499 | 已取消 | 系统终止请求,通常是由于客户端超时。 |
500 | 内部 | 内部服务器错误。通常是服务器错误。 |
501 | 未实现 | 服务器没有实现 API 方法。 |
503 | 不可用 | 服务不可用。通常服务器已停止运行。 |