הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
הגישה למשתנה הזרימה message ולמאפיינים שלו תלויה בנקודה בתוך זרימת ה-API Proxy שבה מתבצעת הגישה. הוא זמין בכל ההקשרים, בניגוד לחלק מהאובייקטים, כמו request או response.
תרחישים לדוגמה
תרחיש השימוש העיקרי במשתנה הזרימה message הוא כששרת ה-proxy נכנס לזרימת השגיאות: משתני הזרימה request ו-response לא נמצאים בהיקף.
לדוגמה, בתהליך השגיאה, האובייקט response לא זמין. אם אתם נמצאים בתהליך השגיאה, לא תוכלו להגדיר כותרות תגובה באובייקט response באמצעות מדיניות JavaScript. במקום זאת, אפשר להשתמש באחת מהאפשרויות הבאות:
שני האובייקטים האלה זמינים בתהליך של השגיאה, ואפשר להשתמש בהם כדי להגדיר כותרות תגובה מתוך מדיניות JavaScript, או לגשת אליהם במדיניות אחרת שיכולה להשתמש במשתני זרימה.
אתם יכולים להשתמש במדיניות AssignMessage כדי להקצות ערכים, כמו כותרות, לאובייקט response. האלמנט AssignMessage מטפל אוטומטית במעבר מהקשר של זרימת הבקשה/התגובה להקשר של זרימת השגיאה.
תרחיש שימוש נוסף במשתנה message הוא רישום ביומן של נתוני תגובה ב-PostClientFlow באמצעות המדיניות MessageLogging. אם משתמשים באובייקט message, אפשר לרשום ביומן את פרטי התגובה בצורה חלקה אחרי תנאי הצלחה ושגיאה בשרת הפרוקסי.
דוגמאות
בתהליך שגיאה, אפשר להגדיר כותרת תגובה ממדיניות JavaScript באמצעות error או message. לדוגמה:
context.setVariable('error.header.FOO-1', 'error_header');או
context.setVariable('message.header.FOO-2', 'message_header');לעומת זאת, הביטוי הבא לא יעבוד:
context.setVariable('response.header.FOO-3', 'response_header');במקרה הזה, המשתנה response לא נמצא בהיקף של זרימת השגיאות. (הערה: במעקב, זה מסומן חזותית על ידי משתנים שמוצגים עם סימן שווה עם קו אלכסוני חוצה).
כדי להגדיר כותרות תגובה גם לזרימות של הצלחה וגם לזרימות של שגיאות במדיניות אחת, אפשר להשתמש ב-message בתוך מדיניות JavaScript. לדוגמה:
<faultrules>
<faultrule name="invalid_key_rule">
<step>
<name>SetResponseHeaders</name>
</step>
<condition>(fault.name = "InvalidApiKey")</condition>
</faultrule>
</faultrules>במדיניות, קוד כמו הקוד הבא מגדיר את כותרת השגיאה או התגובה בכל הקשר של זרימת נתונים:
context.setVariable('message.header.FOO-1', 'the header value');אפשר להשתמש באותה מדיניות בתהליך הרגיל של ProxyResponse, והיא תפעל כי message זמין מכל ההקשרים.