גישה למשתני זרימה ב-Node.js

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

מבוא

צריך להשתמש במודול apigee-access כדי לגשת למשתני זרימה של Apigee Edge באפליקציה Node.js. המודול כולל שיטות לקבלה, הגדרה ומחיקה של משתנים. יש לו גם שיטה נוחה להגדרת משתנה של מספר שלם.

משתני זרימה קיימים בהקשר של זרימה של שרת proxy ב-API. חלק מהמשתנים "מובְנים" ב-Edge. סוגים אחרים נוצרים כשהמדיניות מתבצעת, ואתם יכולים ליצור משתנים משלכם. משתני זרימה משמשים בדרך כלל להעברת נתונים ממדיניות אחת לאחרת ולהגדרת תנאים בזרימות מותנות. מידע נוסף על משתני זרימה זמין במאמר משתנים ותנאים של זרימה.

לקבלת מבוא למודול apigee-access ולתכונות האחרות שלו, קראו את המאמר שימוש במודול הגישה לממשקי API.

דוגמה פעילה

נניח שמדיניות Edge שפועלת בנתיב תהליך הבקשה מגדירה משתנה שנקרא AuthenticatedUserId. הקוד הבא ניגש אל המשתנה ומדפיס אותו ביומן. בנוסף, הקוד מגדיר משתנה. לאחר מכן אפשר לגשת למשתנה הזה מתוך מדיניות, שמתוארת בהמשך.

var http = require('http');
var apigee = require('apigee-access');

http.createServer(function (request, response) {
  // The request parameter must be a request object that came from the http module
  var userId = apigee.getVariable(request, 'AuthenticatedUserId');
  apigee.setVariable(request, "custom.foo", "Bar");
  console.log('Authenticated Apigee User ID is %s', userId);
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

אפשר להעתיק את הקוד הזה לקובץ JavaScript, לפרוס אותו ב-Edge ולנסות אותו. קוראים לקובץ server.js. כדי לפרוס אותו, משתמשים:

apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access

אחרי פריסת האפליקציה ל-Edge, צריך להוסיף מדיניות assignMessage עם ההגדרה הבאה לזרימת הבקשה של ProxyEndpoint:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="AddUserId">
    <DisplayName>AddUserId</DisplayName>
    <FaultRules/>
    <Properties/>  
    <AssignVariable>
        <Name>AuthenticatedUserId</Name>
        <Value>ntesla</Value>
        <Ref/>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

בשלב הבא, מצרפים מדיניות הקצאה נוספת לתהליך השליחה מראש של תגובת TargetEndpoint:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="SetHeader">
    <DisplayName>SetHeader</DisplayName>
    <FaultRules/>
    <Properties/>
    <Set>
        <Headers>
            <Header name="MySpecialHeader">{custom.foo}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

ניתן לקרוא לשרת ה-proxy באופן הבא:

curl -i http://myorg-test.apigee.net/access

בממשק המשתמש של הניהול, עוברים לדף של שרת ה-proxy לגישה ופותחים את התצוגה פיתוח. לוחצים על Node.js Logs כדי להציג את פלט היומן משרת ה-proxy. אם שרת ה-Proxy מוגדר כראוי, תראו שהמשתנה userId הוגדר. הכותרת שהוגדרה בפלט cURL בחלון הטרמינל תופיע גם:

HTTP/1.1 200 OK

Content-Type: text/plain
Date: Tue, 27 05 2014 23:20:52 GMT
MySpecialHeader: Bar
Content-Length: 12
Connection: keep-alive

שיטות


getVariable

var result = getVariable(httpRequest, name);

הפונקציה מקבלת משתנה בעל שם.

פרמטרים:

  • httpRequest: אובייקט הבקשה שמגיע מהמודול http.
  • name: (מחרוזת) שם המשתנה שצריך לאחזר.

החזרות:

מחרוזת או מספר, בהתאם לסוג שהוגדר באמצעות setVariable() , מתי יצרתם אותו במקום אחר או כשמדיניות כלשהי יצרה אותו. כשניגשים לאחד מהמשתנים של Edge המוגדרים מראש, אפשר למצוא רשימה של סוגים בחומר העזר בנושא משתנים. לסוגי המשתנים שנוצרו על ידי כללי המדיניות, יש לעיין בנושא העזר הספציפי למדיניות.

לדוגמה:

var apigee = require('apigee-access');
    // "httpRequest" must be a request object that came from the http module
    var val1 = apigee.getVariable(request, 'TestVariable');
    var val2 = apigee.getVariable(request, 'request.client.ip');

setVariable

setVariable(httpRequest, name, value);

מגדירה משתנה. חלק מהמשתנים הם לקריאה בלבד, והשיטה setVariable() מציגה חריגה אם מנסים להגדיר אחד מהם. כדי לקבוע אילו משתנים מוגדרים לקריאה בלבד, אפשר לעיין בחומר העזר בנושא משתנים.

פרמטרים:

  • httpRequest: אובייקט הבקשה שמגיע מהמודול http.
  • name: (מחרוזת) שם המשתנה שצריך לאחזר.
  • value: יכול להיות מספר, מחרוזת, בוליאני, null או לא מוגדר.

דוגמה:

var apigee = require('apigee-access');
    apigee.setVariable(request, 'TestVariable', 'bar');
    // This will throw an exception because client.ip is read-only.
    apigee.setVariable(request, 'client.ip');
    

setIntVariable

setIntVariable(httpRequest, name, value);

השיטה setIntVariable() היא שיטת נוחות ש קודם מאלצת את הפרמטר של הערך למספר שלם, ואז מגדירה אותו.

פרמטרים:

  • httpRequest: אובייקט הבקשה שמגיע מהמודול http.
  • name: (מחרוזת) שם המשתנה שיש להגדיר.
  • value: הפרמטר של הערך חייב להיות מחרוזת או מספר.

דוגמה:

var apigee = require('apigee-access');
// Convert "123" to an integer and set it
apigee.setIntVariable(request, 'TestVariable', '123');
// Use something that's already a number
apigee.setIntVariable(request, 'TestVariable2', 42);

deleteVariable

מוחקת משתנה בעל שם. מחיקה של משתנה לקריאה בלבד היא שגיאה. רשימה מלאה של משתנים לקריאה בלבד זמינה בחומר העזר בנושא משתנים.

deleteVariable(httpRequest, name);

פרמטרים:

  • httpRequest: אובייקט הבקשה שמגיע מהמודול http.
  • name: (מחרוזת) שם המשתנה שרוצים למחוק.

דוגמה:

  apigee.deleteVariable(request, 'TestVariable');
    // This will throw an exception because client.ip is a read-only variable.
    apigee.deleteVariable(request, 'client.ip');