以下部分分別描述 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 , 進一步解釋錯誤。
- 一個 errorDetails 物件,涵蓋每個 API 特定的錯誤的更多信息。
要分析錯誤的根本原因,請參考 error 欄位的值和 errorDetails 欄位的值。使用 message 字段作為錯誤處理的補充,因為有時它可能不會覆蓋與 errorDetails 字段相同的細節水平。
範例標準資料儲存錯誤回應
{
"error": "INVALID_ARGUMENT",
"message": "Invalid cursor.",
"errorDetails": [
{
"errorDetailType": "DatastoreErrorInfo",
"datastoreErrorCode": "InvalidCursor"
}
]
}
示例錯誤回應顯示高級Open Cloud 為 、錯誤 為 、以及 專門用於 數據存儲 的 。從回應的 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 | 無法使用 | 服務無法使用。通常伺服器已停止運作。 |