כרגע מוצג התיעוד של 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');