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

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

ভূমিকা

Node.js অ্যাপ্লিকেশনে Apigee Edge ফ্লো ভেরিয়েবল অ্যাক্সেস করতে apigee-access মডিউল ব্যবহার করুন। মডিউলে ভেরিয়েবল পাওয়ার, সেট করার ও মুছে দেওয়ার পদ্ধতি আছে। এছাড়াও, এতে পূর্ণসংখ্যা ভেরিয়েবল সেট করার জন্য একটি কনভেনিয়েন্স পদ্ধতি আছে।

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

আপনি এই কোডটি একটি JavaScript ফাইলে কপি করতে, 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 লগ বিকল্পে ক্লিক করুন। প্রক্সি সঠিকভাবে কনফিগার করা থাকলে, আপনি দেখতে পাবেন যে 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() হল একটি সুবিধাজনক পদ্ধতি যা প্রথমে value প্যারামিটারকে পূর্ণসংখ্যায় পরিবর্তন করে এবং তারপর সেটি সেট করে।

প্যারামিটার:

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