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