הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
בנושא הזה נסביר על המבנה של שגיאות במדיניות ועל סוגי משתני הזרימה שמוגדרים כשמתרחשת שגיאה במדיניות. המידע הזה חיוני אם אתם מתכננים ומטמיעים טיפול בשגיאות בשרתי ה-proxy.
בנושא הזה מניחים שיש לכם הבנה כללית של אופן הטיפול בשגיאות ב-Apigee, ושיש לכם מושג מהם כללי שגיאה. אם אתם צריכים הסבר, כדאי לעיין במאמר טיפול בשגיאות. המידע כאן יעזור לכם גם להתמצא בהפניה לשגיאות במדיניות ולהשתמש בה.
מידע על תגובת השגיאה שמוגדרת כברירת מחדל במדיניות
כשמדיניות מסוימת מחזירה שגיאה, Apigee עובר מיד לתהליך השגיאה ויוצר הודעת שגיאה. ההודעה הזו שנוצרת על ידי המערכת היא אובייקט JSON שכולל שני חלקי מידע: errorcode ו-faultstring.
לדוגמה:
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"mymessage message is not available for ExtractVariable: ParseJsonResponse" } }
בואו ננתח במהירות את הודעת השגיאה הזו:
השגיאה errorcode מורכבת מprefix ומerror
name, באופן הבא: [prefix].[error_name]. בדוגמה שלמעלה, steps.extractvariables היא הקידומת וSourceMessageNotAvailable הוא שם השגיאה. הקידומת מציינת איזה סוג מדיניות יצר את השגיאה. בדוגמה שלמעלה, אפשר לראות שמדיניות ExtractVariables יצרה את השגיאה, ושם השגיאה הוא SourceMessageNotAvailable.
התג faultstring מכיל תיאור של השגיאה. מחרוזת השגיאה בדרך כלל כוללת רמזים שיעזרו לכם למצוא את הבעיה הספציפית שגרמה לשגיאה, כמו שם המדיניות, שם של משתנה שלא נפתר או כל דבר אחר שתרם לשגיאה. לדוגמה, בהודעת השגיאה שלמעלה, mymessage הוא שם של משתנה הודעה שלא נפתר שאליו מתייחסת המדיניות, ו-ParseJsonResponse הוא שם המדיניות שהפעילה את השגיאה.
משתנים ספציפיים לשגיאות שקשורות למדיניות
כשמופעלת שגיאת מדיניות, משתנים מסוימים של זרימת נתונים ספציפיים לשגיאה מאוכלסים. המשתנים האלה שימושיים מאוד לטיפול בשגיאות. כפי שמוסבר במאמר בנושא טיפול בשגיאות, נהוג ללכוד את שגיאות המדיניות שנוצרות על ידי המערכת ולבצע פעולה בעקבות זאת, כמו יצירת תגובת שגיאה בהתאמה אישית. לדוגמה, מטעמי אבטחה, יכול להיות שתרצו למנוע מהלקוחות לראות את השגיאות בפועל ואת קודי הסטטוס שמוחזרים מ-Apigee.
המשתנה fault.name
כשמדיניות מחזירה שגיאה, היא מגדירה את משתנה הזרימה fault.name לחלק error_name של קוד השגיאה (כפי שמתואר בקטע הקודם). מאוד נפוץ להעריך את המשתנה הזה כדי להפעיל באופן מותנה כללי שגיאה.
הנה דוגמה לכלל תקלות שבודק את הערך של fault.name:
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Source Message Not Available Fault">
<Step>
<Name>AM-CustomErrorMessage</Name>
<Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
</Step>
</FaultRule>חשוב לזכור שכאשר מדיניות מפעילה שגיאה, המשתנה fault.name
תמיד מוגדר לשם השגיאה.
המשתנה [prefix].[policy_name].failed
בנוסף ל-fault.name, משתנה נוסף שמפתחים בודקים בדרך כלל הוא הדגל [prefix].[policy_name].failed, שמוגדר כ-true או כ-false כשמדיניות מופעלת. בכללי תקלות, כדאי לבדוק מתי הערך הוא true –
כלומר, לבדוק אם אירעה שגיאה. כך יוצרים תנאי שבודק את הדגל [prefix].[policy_name].failed. כדי לבדוק את המשתנה הזה בצורה נכונה, צריך לדעת שני דברים:
- השם של המדיניות שאתם בודקים. זהו הערך של מאפיין השם של המדיניות, ולא שם התצוגה. המאפיין הזה תמיד נכלל ב-XML של הגדרת המדיניות.
- קידומת שספציפית לסוג המדיניות שאתם בודקים. (בהמשך מוסבר איך מוצאים את הקידומת).
לדוגמה, הנה עוד כלל לטיפול בשגיאות. שימו לב איך נוצר שם המשתנה [prefix].[policy_name].failed בתנאי החיצוני. במקרה הזה, הקידומת היא extractvariables ושם המדיניות הוא ParseJsonResponse. במקרה הזה, הכלל לטיפול בשגיאות יופעל רק אם המשתנה הזה הוא true. טיפ: כללים לטיפול בשגיאות יכולים להכיל כמה שלבים, ולכן התבנית הזו היא דרך טובה לארגן את הכללים לטיפול בשגיאות בבלוקים.
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.ParseJsonResponse.failed = true) </Condition> </FaultRule>
מידע על המשתנים
error ו-message
המשתנה error זמין רק בתהליך השגיאה של שרת proxy. אפשר לקבל מידע שימושי מהמשתנה error, כמו הודעת השגיאה, קוד הסטטוס וכו'. תבנית העיצוב של משתנה השגיאה היא:
error.ERROR_COMPONENT = VALUE
לדוגמה:
error.message = "request message is not available for ExtractVariable: ParseJsonResponse"
וגם
error.status.code = "500"
המשתנה message זמין גם בתהליך השגיאה, ואפשר להשתמש בו למטרות דומות לאלה של המשתנה error. המשתנה message הוא מיוחד כי הוא תלוי בהקשר. בזרימת בקשות, הוא מתנהג כמו משתנה בקשה, ובזרימת תגובות, אפשר להשתמש בו כדי לקבל או להגדיר ערכי תגובה.
מידע על כל המשתנים של Apigee, כולל error ו-message, זמין במאמר הפניה למשתני זרימה.