دسترسی به متغیرهای جریان در Node.js

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

مقدمه

از ماژول apigee-access برای دسترسی به متغیرهای جریان Apigee Edge در یک برنامه Node.js استفاده کنید. این ماژول دارای متدهایی برای دریافت ، تنظیم و حذف متغیرها است. همچنین دارای یک متد مناسب برای تنظیم یک متغیر عدد صحیح است .

متغیرهای جریان در چارچوب یک جریان پروکسی 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/');

می‌توانید این کد را در یک فایل جاوا اسکریپت کپی کنید، آن را در 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

حالا، به صفحه پروکسی دسترسی در رابط کاربری مدیریت بروید و نمای توسعه (Develop view) را باز کنید. برای مشاهده خروجی گزارش از پروکسی، روی Node.js Logs کلیک کنید. اگر پروکسی به درستی پیکربندی شده باشد، خواهید دید که متغیر 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

روش‌ها


متغیر دریافت

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(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');
    

متغیر از نوع setInt

setIntVariable(httpRequest، نام، مقدار)؛

متد 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(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');
    
،

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

مقدمه

از ماژول apigee-access برای دسترسی به متغیرهای جریان Apigee Edge در یک برنامه Node.js استفاده کنید. این ماژول دارای متدهایی برای دریافت ، تنظیم و حذف متغیرها است. همچنین دارای یک متد مناسب برای تنظیم یک متغیر عدد صحیح است .

متغیرهای جریان در چارچوب یک جریان پروکسی 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/');

می‌توانید این کد را در یک فایل جاوا اسکریپت کپی کنید، آن را در 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

حالا، به صفحه پروکسی دسترسی در رابط کاربری مدیریت بروید و نمای توسعه (Develop view) را باز کنید. برای مشاهده خروجی گزارش از پروکسی، روی Node.js Logs کلیک کنید. اگر پروکسی به درستی پیکربندی شده باشد، خواهید دید که متغیر 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

روش‌ها


متغیر دریافت

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(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');
    

متغیر از نوع setInt

setIntVariable(httpRequest، نام، مقدار)؛

متد 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(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');