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

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