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