הסוג Status מגדיר מודל שגיאות לוגי שמתאים לסביבות תכנות שונות, כולל ממשקי API ל-REST ול-RPC. היא משמשת את gRPC. מודל השגיאות נועד להיות:
- קל לשימוש ולהבנה עבור רוב המשתמשים
- גמיש מספיק כדי לענות על צרכים בלתי צפויים
סקירה כללית
ההודעה Status מכילה שלושה סוגי נתונים: קוד שגיאה, הודעת שגיאה ופרטי שגיאה. קוד השגיאה צריך להיות ערך enum של google.rpc.Code, אבל יכול להיות שהוא יקבל קודי שגיאה נוספים אם יהיה צורך. הודעת השגיאה צריכה להיות הודעה באנגלית שמיועדת למפתחים, ועוזרת להם להבין את השגיאה ולפתור אותה. אם צריך להציג למשתמש הודעת שגיאה בשפה מקומית, צריך להוסיף את ההודעה המתורגמת לפרטי השגיאה או לתרגם אותה בלקוח. פרטי השגיאה האופציונליים עשויים להכיל מידע שרירותי על השגיאה. יש קבוצה מוגדרת מראש של סוגי פרטי שגיאה בחבילה google.rpc שאפשר להשתמש בהם לתנאי שגיאה נפוצים.
מיפוי שפות
ההודעה Status היא הייצוג הלוגי של מודל השגיאה, אבל היא לא בהכרח הפורמט בפועל של הנתונים שמועברים. כשחושפים את ההודעה Status בספריות לקוח שונות ובפרוטוקולים שונים של העברת נתונים, יכול להיות שהמיפוי שלה יהיה שונה. לדוגמה, סביר להניח שהיא תמופה לכמה חריגים ב-Java, אבל סביר יותר שהיא תמופה לכמה קודי שגיאה ב-C.
שימושים אחרים
אפשר להשתמש במודל השגיאות ובהודעה Status במגוון סביבות, עם או בלי ממשקי API, כדי לספק למפתחים חוויה עקבית בסביבות שונות.
דוגמאות לשימוש במודל השגיאות הזה:
שגיאות חלקיות. אם שירות צריך להחזיר שגיאות חלקיות ללקוח, הוא יכול להטמיע את
Statusבתגובה הרגילה כדי לציין את השגיאות החלקיות.שגיאות בתהליך העבודה. תהליך עבודה טיפוסי כולל כמה שלבים. בכל שלב יכולה להופיע
Statusהודעה לדיווח על שגיאות.פעולות באצווה. אם לקוח משתמש ב-Batch request ובתגובת אצווה, צריך להשתמש בהודעה
Statusישירות בתוך תגובת האצווה, אחת לכל תגובת משנה של שגיאה.פעולות אסינכרוניות. אם קריאה ל-API מטמיעה בתוכה תוצאות של פעולות אסינכרוניות בתגובה שלה, צריך לייצג את הסטטוס של הפעולות האלה ישירות באמצעות ההודעה
Status.רישום ביומן. אם חלק משגיאות ה-API מאוחסנות ביומנים, אפשר להשתמש בהודעה
Statusישירות אחרי כל הסרה שנדרשת מסיבות של אבטחה או פרטיות.
| ייצוג ב-JSON | |
|---|---|
{ "code": number, "message": string, "details": [ { "@type": string, field1: ..., ... } ] } |
|
| שדות | |
|---|---|
code |
קוד הסטטוס, שצריך להיות ערך enum של |
message |
הודעת שגיאה שמוצגת למפתחים, שצריכה להיות באנגלית. כל הודעת שגיאה שמוצגת למשתמש צריכה להיות מותאמת לשפה המקומית ולהישלח בשדה |
details[] |
רשימה של הודעות שכוללות את פרטי השגיאה. יש קבוצה משותפת של סוגי הודעות לשימוש בממשקי API. אובייקט שמכיל שדות מכל סוג שהוא. שדה נוסף |