משתנה זרימת הודעות

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

הגישה למשתנה הזרימה message ולמאפיינים שלו תלויה בנקודה שבתוך תהליך ה-Proxy ל-API שבו מתבצעת הגישה. הוא זמין בכל ההקשרים, ואילו באובייקטים מסוימים, כמו request או response, הם לא.

תרחישים לדוגמה

התרחיש לדוגמה הראשי של משתנה הזרימה message הוא כששרת ה-Proxy מזין את שגיאה: משתני הזרימה request ו-response לא נכללים.

לדוגמה, בתהליך השגיאה, האובייקט response לא זמין. לא יכולת להגדיר כותרות תגובה באובייקט response באמצעות מדיניות JavaScript. אם נמצאים בתהליך השגיאה. במקום זאת, אפשר להשתמש באחת מהאפשרויות הבאות:

שני האובייקטים זמינים בתהליך השגיאה, ואפשר להשתמש בהם כדי להגדיר תשובות כותרות מתוך מדיניות JavaScript או שניתן לגשת אליהן במדיניות אחרת שיכולה להשתמש בזרימה משתנים.

אפשר להשתמש במדיניות AssignMessage כדי להקצות ערכים, כמו כותרות, לאובייקט response. התכונה 'הקצאת הודעה' תטפל אוטומטית במעבר הקשר מזרימת הבקשה/התגובה לתהליך השגיאה.

תרחיש לדוגמה נוסף למשתנה message הוא רישום של נתוני תגובות PostClientFlow עם מדיניות MessageLogging. אם משתמשים באובייקט message, אפשר לתעד באופן חלק את נתוני התגובות בהתאם לתנאי ההצלחה ולשגיאות שרת proxy.

דוגמאות

במקרה של שגיאה, אפשר להגדיר כותרת תגובה ממדיניות JavaScript באמצעות error או message. לדוגמה:

context.setVariable('error.header.FOO-1', 'error_header');

OR

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 זמין מכל ההקשרים.