השגיאות שמוחזרות מ-Isochrones API הן בפורמט JSON הסטנדרטי של Google Cloud, google.rpc.Status:
{
"error": {
"code": 400,
"message": "Violation in GenerateIsochroneRequest.travel_duration: travel_duration must be at least 1 second and not exceed 3600 seconds (60 minutes) for DRIVE or TWO_WHEELER mode or 7200 seconds (120 minutes) for other modes",
"status": "INVALID_ARGUMENT"
}
}
כדי לטפל בשגיאות באופן פרוגרמטי, משתמשים בשדה status (או HTTP code). הטקסט של message מיועד למפתחים ועשוי להשתנות, אז אל תנתחו אותו.
כשעובדים עם Isochrones API, יכול להיות שתקבלו את קודי הסטטוס הנפוצים הבאים:
-
400 INVALID_ARGUMENT: הבקשה מכילה פרמטרים לא תקינים או תחביר שגוי:- גבולות משך הזמן: ודאו שהערך של
travelDurationהוא לפחות"1s", מסתיים ב-"s"(למשל"1800s") ולא חורג מהמגבלה של המצב:3600s(60 דקות) ל-DRIVEול-TWO_WHEELER, או7200s(120 דקות) ל-WALKול-BICYCLE. המערכת דוחה ערכים של אפס ("0s"), ערכים שליליים וערכים של פחות משנייה אחת (כמו"0.5s"). - העדפת תנועה: ודאו שהערך של
routingPreferenceלא מוגדר כ-TRAFFIC_AWAREכשהערך שלtravelModeהואWALKאוBICYCLE. אפשר להשתמש בתנועה בזמן אמת רק ב-DRIVEוב-TWO_WHEELER. - ערכי enum נדרשים: ודאו שציינתם את
travelModeוגם אתtravelDirection(FROMאוTO) ושהם לא מוגדרים כ-*_UNSPECIFIED. - קואורדינטות של נקודת המוצא (
location): מגדירים אתlatitude(ב[-90, 90]) ואתlongitude(ב[-180, 180]). אם משמיטים שדה, המערכת מתייחסת אליו כאל0בלי שגיאה: אם משמיטים את שניהם, מקבלים(0, 0), שנדחה. אם משמיטים רק אתlatitude, נקודת המוצא ממוקמת בקו המשווה. אם משמיטים רק אתlongitude, היא ממוקמת בקו האורך הראשי. - פורמט מזהה המקום (
place): ודאו שהערךplaceהוא מזהה מקום או שם משאב שלplaces/{place_id}(לדוגמה,"places/ChIJIQBpAG2ahYAR_6128GcTUEo"), בלי קטעי נתיב נוספים, ושהוא מפנה למזהה מקום חוקי. - מסכת שדה (
X-Goog-FieldMask): אם צוינה, הכותרת חייבת להפנות לנתיבי תגובה תקינים כמוisochrone,isochrone.geoJsonאו*. - Invalid API key (
API_KEY_INVALID): מפתח API לא תקין או לא מזוהה ב-X-Goog-Api-Keyאו ב-?key=מחזיר את השגיאה400 INVALID_ARGUMENTעם הסיבהAPI_KEY_INVALID.
- גבולות משך הזמן: ודאו שהערך של
-
403 PERMISSION_DENIED: האימות או ההרשאה נכשלו:- לא צוינו בבקשה פרטי כניסה לאימות (אסימון
X-Goog-Api-Key,?key=אוAuthorization: Bearer). - Isochrones API (
isochrones.googleapis.com) לא מופעל בפרויקט שלכם ב-Google Cloud, או שהחיוב לא מופעל. - למפתח ה-API יש הגבלות על יעד ה-API, כתובת ה-IP או הגורם המפנה ב-HTTP שחוסמות בקשות אל
isochrones.googleapis.com.
- לא צוינו בבקשה פרטי כניסה לאימות (אסימון
-
404 NOT_FOUND: לא ניתן היה לפתור את נקודת המוצא או להצמיד אותה לרשת הכבישים:- לא ניתן היה לזהות את המיקום של
place. צריך לוודא שמזהה המקום תקין ועדכני. - נקודת המוצא
locationאו מרכז הכובדplaceרחוקים מדי ממקטע כביש שמתאים לאמצעי התחבורה, כלומר המרחק גדול מהמרחק המקסימלי להצמדה (כ-200 מטרים, או פחות מזה לאמצעי התחבורהWALKו-BICYCLE). צריך להזיז את הקואורדינטה קרוב יותר לכביש ציבורי או להעביר קואורדינטות של כניסה לכביש במקום מזהה מקום של פארק גדול או של ציון דרך. - הקואורדינטה נמצאת באזור שאין בו נתוני כבישים (כמו אוקיינוס פתוח).
- לא ניתן היה לזהות את המיקום של
429 RESOURCE_EXHAUSTED: הפרויקט חרג ממגבלת המכסה לדקה (ברירת המחדל היא 300 בקשות לדקה):{ "error": { "code": 429, "message": "Quota exceeded for quota metric 'Requests' and limit 'Requests per minute' of service 'isochrones.googleapis.com'.", "status": "RESOURCE_EXHAUSTED" } }לווסת את קצב הבקשות של הלקוח ולנסות שוב תגובות
429באמצעות השהיה מעריכית לפני ניסיון חוזר (exponential backoff) עם רעידות אקראיות.
503 UNAVAILABLE: השירות לא זמין באופן זמני או שיש עומס יתר. מנסים שוב לשלוח את הבקשה באמצעות השהיה מעריכית לפני ניסיון חוזר (exponential backoff).
500 INTERNAL: אירעה שגיאת שרת פנימית, כמו זמן קצוב לתפוגה בקצה העורפי. מנסים שוב לשלוח את הבקשה באמצעות השהיה מעריכית לפני ניסיון חוזר (exponential backoff).