次のセクションでは、それぞれ v2 および v1 リソースメソッドのエラーモデルが説明されます。
資源エラーモデル v2
デフォルトでは、リソースメソッドは 200 OK ステータスで応答します。リクエストが失敗したとき、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 、これはエラーをさらに説明します。
- 各APIに特有のエラーの詳細をカバーする errorDetails オブジェクト。
エラーの根本原因を分析するには、error フィールドと errorDetails フィールドの値を参照してください。 フィールドを使用して、エラー処理の補助として、時々 フィールドと同じレベルの詳細をカバーしない可能性があるためです。
標準データストアのエラー応答の例
{
"error": "INVALID_ARGUMENT",
"message": "Invalid cursor.",
"errorDetails": [
{
"errorDetailType": "DatastoreErrorInfo",
"datastoreErrorCode": "InvalidCursor"
}
]
}
例のエラー応答は、高レベルのオープンクラウド error を INVALID_ARGUMENT 、エラー message を InvalidCursor 、そして errorDetails 特定のデータストア と datastoreErrorCode を InvalidCursor として示します。応答の error および datastoreErrorCode フィールドから、エラーを引き起こした無効なカーソルパラメータを通過したことを理解できます。その後、カーソルパラメータを修正して問題を解決できます。
注文されたすべてのデータストアのエラー応答には、次の形式が含まれています:
データストアの順番付けエラー応答の例
{
"code": "INVALID_ARGUMENT",
"message": "Invalid cursor."
}
The code には高レベルのエラーのストリングが含まれ、The message にはエラーに関連する特定の詳細が含まれます
コード
次の表を参照して、すべての高レベルのオープンクラウドエラーの概要をまとめます。
HTTPステータスコード | エラー | 説明 |
---|---|---|
400 | 無効な引数 INVALID_ARGUMENT | 無効な引数 (無効な universeId など) を通過しました。また、Content-Length や Content-Type などのヘッダーが欠落しているかもしれません。 |
403 | 不十分なスコープ INSUFFICIENT_SCOPE | リクエストはアクセストークンで提供されたより高い権限を必要とします。 |
403 | 許可_拒否 | リクエストには、操作を実行するのに十分な範囲がありません。 |
404 | NOT_FOUND | システムは、データストアなどの指保管されたリソースを見つけられません。 |
409 | 中止されました | 宇宙の一部でない場所を公開するなどの理由により、操作が中断されました。 |
429 | リソース_疲れた | 通常、操作を実行するのに十分なクオータがなく、リクエストが多すぎるためです。 |
499 | キャンセルされた | システムはリクエストを終了し、通常はクライアント側の期限切れによるものです。 |
500 | 内部 | 内部サーバーエラー。通常はサーバーバグです。 |
501 | 実装されていない NOT_IMPLEMENTED | サーバーは API メソッドを実装していません。 |
503 | 使用できません | サービスが利用できません。通常、サーバーがダウンしています。 |