درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
مقدمه
از واحد apigee-access برای دسترسی به متغیرهای جریان
Apigee Edge در برنامه Node.js استفاده کنید. این واحد دارای روشهایی برای دریافت، تنظیم، و حذف متغیرها است. همچنین روشی آسان برای تنظیم متغیر عدد صحیح دارد.
متغیرهای Flow در بافت جریان پراکسی 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/');
میتوانید این کد را در فایل جاوا اسکریپت کپی کنید، آن را در 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>
میتوانید کارگزار را بهاینصورت فراخوانی کنید:
curl -i http://myorg-test.apigee.net/access
اکنون به صفحه پراکسی دسترسی در واسط کاربر مدیریت بروید و نمای توسعه را بالا بیاورید. برای مشاهده برونداد گزارش از پراکسی، روی گزارشهای Node.js کلیک کنید. اگر پراکسی بهدرستی پیکربندی شده باشد، خواهید دید که متغیر 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: میتواند عدد، رشته، بولی، تهی، یا تعریفنشده باشد.
مثال:
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');