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

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

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

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

התרחיש לדוגמה העיקרי של משתנה הזרימה message הוא כאשר שרת ה-proxy נכנס לתהליך השגיאה: משתני הזרימה request ו-response מחוץ להיקף.

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

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

אפשר להשתמש במדיניות של AssignedMessage לאובייקט 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');

אפשר להשתמש שוב במדיניות הזו בתהליך הרגיל של Proxy Response, והיא תתבצע בהצלחה כי message זמין בכל ההקשרים.