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

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

ভূমিকা

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

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

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

কাজের উদাহরণ

কল্পনা করুন যে রিকোয়েস্ট ফ্লো পাথে চলমান একটি এজ পলিসি 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/');

আপনি এই কোডটি একটি জাভাস্ক্রিপ্ট ফাইলে অনুলিপি করতে পারেন, এটিকে এজ এ স্থাপন করতে পারেন এবং এটি চেষ্টা করে দেখতে পারেন। ফাইল server.js কল করুন। এটি স্থাপন করতে ব্যবহার করুন:

apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access

আপনি এজ এ অ্যাপ্লিকেশন স্থাপন করার পরে, 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 ভেরিয়েবল সেট করা হয়েছে। আপনি আরও দেখতে পাবেন যে শিরোনামটি আপনার টার্মিনাল উইন্ডোতে কার্ল আউটপুটে সেট করা হয়েছে:

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 : (স্ট্রিং) পুনরুদ্ধার করার জন্য ভেরিয়েবলের নাম।

রিটার্ন:

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

উদাহরণ:

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

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