Node.js-এ ফ্লো ভেরিয়েবল অ্যাক্সেস করা

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

ভূমিকা

একটি Node.js অ্যাপ্লিকেশনে Apigee Edge ফ্লো ভেরিয়েবল অ্যাক্সেস করতে apigee-access মডিউলটি ব্যবহার করুন। এই মডিউলটিতে ভেরিয়েবল গেট (get) , সেট (set) এবং ডিলিট (delet) করার জন্য মেথড রয়েছে। এছাড়াও, এতে একটি ইন্টিজার ভেরিয়েবল সেট করার জন্য একটি সুবিধাজনক মেথডও আছে।

ফ্লো ভেরিয়েবল একটি এপিআই প্রক্সি ফ্লো-এর প্রেক্ষাপটে বিদ্যমান থাকে। কিছু ভেরিয়েবল Edge-এর মধ্যে "অন্তর্নির্মিত" থাকে। অন্যগুলো পলিসি কার্যকর হওয়ার সময় তৈরি হয়, এবং আপনি আপনার নিজস্ব ভেরিয়েবলও তৈরি করতে পারেন। ফ্লো ভেরিয়েবল সাধারণত এক পলিসি থেকে অন্য পলিসিতে ডেটা পাঠাতে এবং শর্তসাপেক্ষ ফ্লো-তে শর্ত নির্ধারণ করতে ব্যবহৃত হয়। ফ্লো ভেরিয়েবল সম্পর্কে তথ্যের জন্য, "ফ্লো ভেরিয়েবল এবং শর্তাবলী" দেখুন।

apigee-access মডিউল এবং এর অন্যান্য বৈশিষ্ট্য সম্পর্কে পরিচিতির জন্য, "Using the apigee-access module" দেখুন।

কার্যকরী উদাহরণ

ধরুন, রিকোয়েস্ট ফ্লো পাথে চলমান একটি 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-এ অ্যাপ্লিকেশনটি ডেপ্লয় করার পর, ProxyEndpoint রিকোয়েস্ট ফ্লো-তে নিম্নলিখিত কনফিগারেশন সহ একটি AssignMessage পলিসি যোগ করুন:

<?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 রেসপন্স প্রিফ্লোতে আরেকটি AssignMessage পলিসি সংযুক্ত করুন:

<?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

এখন, ম্যানেজমেন্ট UI-তে অ্যাক্সেস প্রক্সির পেজে যান এবং ডেভেলপ ভিউটি খুলুন। প্রক্সি থেকে লগ আউটপুট দেখতে 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 : (String) যে ভেরিয়েবলটি পুনরুদ্ধার করতে হবে তার নাম।

ফেরত:

setVariable() ব্যবহার করে যে টাইপটি সেট করা হয়েছিল, যখন এটি আপনার দ্বারা অন্য কোথাও তৈরি করা হয়েছিল, অথবা যখন কোনো পলিসি এটি তৈরি করেছিল, তার উপর নির্ভর করে এটি একটি স্ট্রিং বা সংখ্যা হতে পারে। আপনি যদি Edge-এর কোনো বিল্ট-ইন ভেরিয়েবল অ্যাক্সেস করেন, তাহলে আপনি Variables Reference- এ টাইপগুলোর একটি তালিকা খুঁজে পেতে পারেন। পলিসি দ্বারা তৈরি ভেরিয়েবলের টাইপগুলোর জন্য, নির্দিষ্ট পলিসি রেফারেন্স টপিকটি দেখুন।

উদাহরণ:

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 : (String) যে ভেরিয়েবলটি পুনরুদ্ধার করতে হবে তার নাম।
  • 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(httpRequest, name, value);

setIntVariable() মেথডটি একটি সুবিধাজনক মেথড, যা প্রথমে ভ্যালু প্যারামিটারটিকে একটি ইন্টিজারে রূপান্তর করে এবং তারপর সেটিকে সেট করে।

পরামিতি:

  • httpRequest : http মডিউল থেকে আসা রিকোয়েস্ট অবজেক্ট।
  • name : (String) যে ভেরিয়েবলটি সেট করতে চান তার নাম।
  • 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 : (String) যে ভেরিয়েবলটি মুছে ফেলতে চান তার নাম।

উদাহরণ:

  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 ডকুমেন্টেশন
.info- তে যান।

ভূমিকা

একটি Node.js অ্যাপ্লিকেশনে Apigee Edge ফ্লো ভেরিয়েবল অ্যাক্সেস করতে apigee-access মডিউলটি ব্যবহার করুন। এই মডিউলটিতে ভেরিয়েবল গেট (get) , সেট (set) এবং ডিলিট (delet) করার জন্য মেথড রয়েছে। এছাড়াও, এতে একটি ইন্টিজার ভেরিয়েবল সেট করার জন্য একটি সুবিধাজনক মেথডও আছে।

ফ্লো ভেরিয়েবল একটি এপিআই প্রক্সি ফ্লো-এর প্রেক্ষাপটে বিদ্যমান থাকে। কিছু ভেরিয়েবল Edge-এর মধ্যে "অন্তর্নির্মিত" থাকে। অন্যগুলো পলিসি কার্যকর হওয়ার সময় তৈরি হয়, এবং আপনি আপনার নিজস্ব ভেরিয়েবলও তৈরি করতে পারেন। ফ্লো ভেরিয়েবল সাধারণত এক পলিসি থেকে অন্য পলিসিতে ডেটা পাঠাতে এবং শর্তসাপেক্ষ ফ্লো-তে শর্ত নির্ধারণ করতে ব্যবহৃত হয়। ফ্লো ভেরিয়েবল সম্পর্কে তথ্যের জন্য, "ফ্লো ভেরিয়েবল এবং শর্তাবলী" দেখুন।

apigee-access মডিউল এবং এর অন্যান্য বৈশিষ্ট্য সম্পর্কে পরিচিতির জন্য, "Using the apigee-access module" দেখুন।

কার্যকরী উদাহরণ

ধরুন, রিকোয়েস্ট ফ্লো পাথে চলমান একটি 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-এ অ্যাপ্লিকেশনটি ডেপ্লয় করার পর, ProxyEndpoint রিকোয়েস্ট ফ্লো-তে নিম্নলিখিত কনফিগারেশন সহ একটি AssignMessage পলিসি যোগ করুন:

<?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 রেসপন্স প্রিফ্লোতে আরেকটি AssignMessage পলিসি সংযুক্ত করুন:

<?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

এখন, ম্যানেজমেন্ট UI-তে অ্যাক্সেস প্রক্সির পেজে যান এবং ডেভেলপ ভিউটি খুলুন। প্রক্সি থেকে লগ আউটপুট দেখতে 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 : (String) যে ভেরিয়েবলটি পুনরুদ্ধার করতে হবে তার নাম।

ফেরত:

setVariable() ব্যবহার করে যে টাইপটি সেট করা হয়েছিল, যখন এটি আপনার দ্বারা অন্য কোথাও তৈরি করা হয়েছিল, অথবা যখন কোনো পলিসি এটি তৈরি করেছিল, তার উপর নির্ভর করে এটি একটি স্ট্রিং বা সংখ্যা হতে পারে। আপনি যদি Edge-এর কোনো বিল্ট-ইন ভেরিয়েবল অ্যাক্সেস করেন, তাহলে আপনি Variables Reference- এ টাইপগুলোর একটি তালিকা খুঁজে পেতে পারেন। পলিসি দ্বারা তৈরি ভেরিয়েবলের টাইপগুলোর জন্য, নির্দিষ্ট পলিসি রেফারেন্স টপিকটি দেখুন।

উদাহরণ:

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 : (String) যে ভেরিয়েবলটি পুনরুদ্ধার করতে হবে তার নাম।
  • 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(httpRequest, name, value);

setIntVariable() মেথডটি একটি সুবিধাজনক মেথড, যা প্রথমে ভ্যালু প্যারামিটারটিকে একটি ইন্টিজারে রূপান্তর করে এবং তারপর সেটিকে সেট করে।

পরামিতি:

  • httpRequest : http মডিউল থেকে আসা রিকোয়েস্ট অবজেক্ট।
  • name : (String) যে ভেরিয়েবলটি সেট করতে চান তার নাম।
  • 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 : (String) যে ভেরিয়েবলটি মুছে ফেলতে চান তার নাম।

উদাহরণ:

  apigee.deleteVariable(request, 'TestVariable');
    // This will throw an exception because client.ip is a read-only variable.
    apigee.deleteVariable(request, 'client.ip');