Status
類型定義了適合不同程式設計環境的邏輯錯誤模型,包括REST API和RPC API。它由gRPC使用。誤差模型設計為:
- 大多數用戶易於使用和理解
- 夠靈活,滿足意想不到的需求
概述
Status
訊息包含三部分資料:錯誤代碼、錯誤訊息和錯誤詳細資料。錯誤代碼應該是google.rpc.Code
的枚舉值,但如果需要,它可以接受其他錯誤代碼。錯誤訊息應該是開發人員的英文訊息,幫助開發人員理解和解決錯誤。如果需要本地化的用戶導向的錯誤訊息,請將本地化訊息放入錯誤詳細資料中或在用戶端中進行本地化。可選的錯誤詳細資訊可以包含有關錯誤的任意資訊。 google.rpc
套件中有一組預先定義的錯誤詳細資訊類型,可用於常見錯誤情況。
語言映射
Status
訊息是錯誤模型的邏輯表示,但不一定是實際的傳輸格式。當Status
訊息暴露在不同的客戶端庫和不同的有線協定中時,它可以進行不同的映射。例如,它可能會對應到 Java 中的某些異常,但更可能對應到 C 中的某些錯誤代碼。
其他用途
錯誤模型和Status
訊息可用於各種環境(無論有或沒有 API),以在不同環境中提供一致的開發人員體驗。
此誤差模型的使用範例包括:
部分錯誤。如果服務需要向客戶端傳回部分錯誤,它可以在正常回應中嵌入
Status
來指示部分錯誤。工作流程錯誤。典型的工作流程有多個步驟。每個步驟可能有一個用於錯誤報告的
Status
訊息。批量操作。如果用戶端使用批次請求和批次回應,則應直接在批次回應內使用
Status
訊息,每個錯誤子回應對應一個狀態訊息。異步操作。如果 API 呼叫在其回應中嵌入非同步操作結果,則應使用
Status
訊息直接表示這些操作的狀態。記錄。如果某些 API 錯誤儲存在日誌中,則出於安全/隱私原因需要進行任何剝離後,可以直接使用訊息
Status
。
JSON 表示 | |
---|---|
{ "code": number, "message": string, "details": [ { "@type": string, field1: ..., ... } ] } |
領域 | |
---|---|
code | 狀態碼,應該是 |
message | 面向開發人員的錯誤訊息,應為英文。任何面向使用者的錯誤訊息都應本地化並在 |
details[] | 包含錯誤詳細資訊的訊息清單。有一組通用的訊息類型可供 API 使用。 包含任意類型欄位的物件。附加欄位 |