אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
מבוא
אפשר להשתמש במודול apigee-access כדי לגשת למשתני flow של Apigee Edge באפליקציית Node.js. למודול יש שיטות לקבלת, להגדרת ולמחיקת משתנים. יש לו גם שיטה נוחה להגדרת משתנה מסוג integer.
משתני Flow קיימים בהקשר של Flow של שרת proxy ל-API. חלק מהמשתנים הם 'מובְנים' ב-Edge. חלק מהמשתנים נוצרים כשמפעילים מדיניות, ואפשר גם ליצור משתנים משלכם. בדרך כלל משתמשים במשתני Flow כדי להעביר נתונים ממדיניות אחת למדיניות אחרת, וכדי להגדיר תנאים בזרימות מותנות. מידע על משתני זרימה זמין במאמר משתני זרימה ותנאים.
מידע נוסף על מודול apigee-access ועל התכונות האחרות שלו זמין במאמר שימוש במודול apigee-access.
דוגמה לשימוש
נניח שמדיניות 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>
לאחר מכן, מצמידים עוד מדיניות AssignMessage ל-preflow של התגובה של 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
Methods
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 או undefined.
דוגמה:
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');