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

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