প্রবাহ ভেরিয়েবল ব্যবহার করে

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

ধারণাগতভাবে, ফ্লো ভেরিয়েবল হলো এমন অবজেক্ট যা আপনি আপনার পলিসি বা ইউটিলিটি (যেমন ট্রেস টুল) থেকে অ্যাক্সেস করতে পারেন। এগুলো আপনাকে Apigee Edge দ্বারা প্রক্রিয়াকৃত একটি API ট্রানজ্যাকশনের সাথে সম্পর্কিত স্টেট বজায় রাখতে সাহায্য করে।

প্রবাহ চলক বলতে কী বোঝায়?

ফ্লো ভেরিয়েবল একটি এপিআই প্রক্সি ফ্লো-এর প্রেক্ষাপটে বিদ্যমান থাকে এবং একটি সফটওয়্যার প্রোগ্রামে নেমড ভেরিয়েবল যেভাবে স্টেট ট্র্যাক করে, ফ্লো ভেরিয়েবলগুলোও সেভাবেই একটি এপিআই ট্রানজ্যাকশনের স্টেট ট্র্যাক করে। ফ্লো ভেরিয়েবল নিম্নলিখিত তথ্য সংরক্ষণ করে:

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

কিছু ভেরিয়েবল Edge-এর "বিল্ট-ইন" থাকে এবং যখনই কোনো API অনুরোধ আসে, সেগুলি স্বয়ংক্রিয়ভাবে পূরণ হয়ে যায়। একটি API ট্রানজ্যাকশন চলাকালীন এগুলি উপলব্ধ থাকে। এছাড়াও আপনি AssignMessage পলিসির মতো পলিসি ব্যবহার করে, অথবা জাভাস্ক্রিপ্ট, Node.js এবং জাভা কোডে আপনার নিজস্ব কাস্টম ভেরিয়েবল তৈরি করতে পারেন।

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

ফ্লো ভেরিয়েবল কীভাবে ব্যবহার করা হয়?

ফ্লো ভেরিয়েবল পলিসি এবং কন্ডিশনাল ফ্লো -তে ব্যবহৃত হয়:

  • পলিসিগুলো ফ্লো ভেরিয়েবল থেকে স্টেট সংগ্রহ করতে পারে এবং নিজেদের কাজ সম্পাদনের জন্য সেগুলো ব্যবহার করতে পারে।

    উদাহরণস্বরূপ, একটি VerifyJWT পলিসি একটি ফ্লো ভেরিয়েবল থেকে যাচাই করার জন্য টোকেনটি পুনরুদ্ধার করতে পারে এবং তারপর সেটির উপর যাচাইকরণ সম্পাদন করতে পারে। আরেকটি উদাহরণ হিসেবে বলা যায়, একটি জাভাস্ক্রিপ্ট পলিসি ফ্লো ভেরিয়েবল পুনরুদ্ধার করতে পারে এবং সেই ভেরিয়েবলগুলোর মধ্যে থাকা ডেটা এনকোড করতে পারে।

  • প্রোগ্রামিং-এ সুইচ স্টেটমেন্ট যেভাবে কাজ করে, অনেকটা সেইভাবেই কন্ডিশনাল ফ্লো , এজ (Edge)-এর মাধ্যমে কোনো এপিআই (API)-এর প্রবাহকে নির্দেশ করতে ফ্লো ভ্যারিয়েবলকে রেফারেন্স হিসেবে ব্যবহার করতে পারে।

    উদাহরণস্বরূপ, কোনো ত্রুটি ফেরত দেওয়ার নীতি কেবল তখনই কার্যকর হতে পারে যখন একটি নির্দিষ্ট ফ্লো ভেরিয়েবল সেট করা থাকে। পরিশেষে, আপনি একটি Node.js টার্গেট অ্যাপ্লিকেশনে ফ্লো ভেরিয়েবল পেতে এবং সেট করতে পারেন।

চলুন এই প্রতিটি প্রেক্ষাপটে ভেরিয়েবল কীভাবে ব্যবহৃত হয় তার উদাহরণ দেখি।

নীতিমালায় প্রবাহ পরিবর্তনশীল

কিছু পলিসি ইনপুট হিসেবে ফ্লো ভেরিয়েবল গ্রহণ করে।

উদাহরণস্বরূপ, নিম্নলিখিত AssignMessage পলিসিটি client.ip ফ্লো ভেরিয়েবলের মান নিয়ে My-Client-IP নামের একটি রিকোয়েস্ট হেডারে রাখে। রিকোয়েস্ট ফ্লো-তে যোগ করা হলে, এই পলিসিটি একটি হেডার সেট করে যা ব্যাকএন্ড টার্গেটে পাঠানো হয়। আর রেসপন্স ফ্লো-তে সেট করা হলে, হেডারটি ক্লায়েন্ট অ্যাপে ফেরত পাঠানো হয়।

<AssignMessage name="set-ip-in-header">
    <AssignTo createNew="false" transport="http" type="request">request</AssignTo>
    <Set>
        <Headers>
            <Header name="My-Client-IP">{client.ip}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>

আরেকটি উদাহরণ হিসেবে বলা যায়, যখন একটি কোটা পলিসি কার্যকর হয়, তখন বেশ কিছু ফ্লো ভেরিয়েবল পলিসি-সম্পর্কিত মান দিয়ে পূর্ণ হয়। এই ভেরিয়েবলগুলোর মধ্যে একটির নাম হলো ratelimit.my-quota-policy.used.count (যেখানে my-quota-policy হলো আপনার কাঙ্ক্ষিত কোটা পলিসিটির নাম)।

আপনি পরবর্তীতে একটি শর্তসাপেক্ষ ফ্লো কার্যকর করতে পারেন, যা বলবে "যদি বর্তমান কোটার সংখ্যা সর্বোচ্চের ৫০% এর নিচে থাকে এবং সময়টি সকাল ৯টা থেকে বিকাল ৫টার মধ্যে হয়, তবে একটি ভিন্ন কোটা প্রয়োগ করো।" এই শর্তটি বর্তমান কোটার সংখ্যার মান এবং system.time নামক একটি ফ্লো ভ্যারিয়েবলের উপর নির্ভর করতে পারে, যা Edge-এর বিল্ট-ইন ভ্যারিয়েবলগুলোর মধ্যে একটি।

শর্তাধীন প্রবাহে প্রবাহ চলক

শর্তাধীন ফ্লো, ফ্লো ভেরিয়েবলগুলো মূল্যায়ন করে এবং প্রক্সিগুলোকে গতিশীলভাবে আচরণ করতে সক্ষম করে। সাধারণত ফ্লো, স্টেপ এবং রুট রুলের আচরণ পরিবর্তন করার জন্য শর্তগুলো ব্যবহার করা হয়।

এখানে একটি শর্তসাপেক্ষ ফ্লো রয়েছে যা একটি প্রক্সি ফ্লো স্টেপে request.verb ভ্যারিয়েবলের মান মূল্যায়ন করে। এক্ষেত্রে, যদি রিকোয়েস্ট ভার্ব `POST` হয়, তাহলে `VerifyAPIKey` পলিসিটি এক্সিকিউট করা হয়। এটি এপিআই প্রক্সি কনফিগারেশনে ব্যবহৃত একটি সাধারণ প্যাটার্ন।

<PreFlow name="PreFlow">
    <Request>
        <Step>
            <Condition>request.verb equals "POST"</Condition>
            <Name>VerifyApiKey</Name>
        </Step>
    </Request>
</PreFlow>

এখন, আপনার মনে প্রশ্ন জাগতে পারে, request.verb , client.ip , এবং system.time মতো ভ্যারিয়েবলগুলো কোথা থেকে আসে? কখন এগুলো ইনস্ট্যানশিয়েট করা হয় এবং একটি ভ্যালু দিয়ে পূরণ করা হয়? ভ্যারিয়েবল কখন তৈরি হয় এবং কখন সেগুলো আপনার জন্য উপলব্ধ হয়, তা বুঝতে “Understanding flow variable scope” দেখুন।

জাভাস্ক্রিপ্ট পলিসি ব্যবহার করে জাভাস্ক্রিপ্ট কোডে ফ্লো ভেরিয়েবল কল করা হয়।

জাভাস্ক্রিপ্ট পলিসির মাধ্যমে, আপনি একটি এপিআই প্রক্সি ফ্লো-এর কনটেক্সট থেকে জাভাস্ক্রিপ্ট কোড এক্সিকিউট করতে পারেন। এই পলিসি দ্বারা এক্সিকিউট হওয়া জাভাস্ক্রিপ্ট Apigee জাভাস্ক্রিপ্ট অবজেক্ট মডেল ব্যবহার করে, যা আপনার কাস্টম কোডকে সেই এপিআই প্রক্সি ফ্লো-এর সাথে যুক্ত রিকোয়েস্ট, রেসপন্স এবং কনটেক্সট অবজেক্টগুলোতে অ্যাক্সেস দেয়, যেখানে আপনার কোডটি এক্সিকিউট হচ্ছে। উদাহরণস্বরূপ, এই কোডটি `target.name` ফ্লো ভ্যারিয়েবল থেকে প্রাপ্ত ভ্যালু দিয়ে একটি রেসপন্স হেডার সেট করে।

context.setVariable("response.header.X-Apigee-Target", context.getVariable("target.name"));

জাভাস্ক্রিপ্ট ব্যবহার করে ভেরিয়েবল পড়া এবং সেট করার এই কৌশলটি, পূর্বে দেখানো AssignMessage পলিসির মাধ্যমে করা কাজের মতোই। Edge-এ একই ধরনের কাজ সম্পন্ন করার এটি কেবল আরেকটি উপায়। মনে রাখার মূল বিষয় হলো, জাভাস্ক্রিপ্ট পলিসি দ্বারা এক্সিকিউট করা জাভাস্ক্রিপ্ট, API প্রক্সি ফ্লো-এর মধ্যে বিদ্যমান এবং স্কোপভুক্ত সমস্ত ফ্লো ভেরিয়েবল অ্যাক্সেস করতে পারে।

Node.js কোডে ফ্লো ভেরিয়েবল

apigee-access মডিউলটি রিকোয়ার করার মাধ্যমে, আপনি Edge-এ ডেপ্লয় করা Node.js কোডের ভেতর থেকে ফ্লো ভ্যারিয়েবল সেট ও অ্যাক্সেস করতে পারবেন।

এখানে একটি সহজ উদাহরণ দেওয়া হলো যেখানে custom.foo নামের একটি ভেরিয়েবলের মান ` Bar সেট করা হয়েছে। একবার সেট হয়ে গেলে, Node.js কোডটি কার্যকর হওয়ার পরে প্রক্সি ফ্লোতে থাকা যেকোনো পলিসি বা অন্যান্য কোডের জন্য এই নতুন ভেরিয়েবলটি উপলব্ধ হয়ে যায়।

var http = require('http');
var apigee = require('apigee-access');

http.createServer(function (request, response) {
  apigee.setVariable(request, "custom.foo", "Bar");
  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/');

Node.js-এ ফ্লো ভেরিয়েবল অ্যাক্সেস করা (Accessing flow variables in Node.js ) অংশে ভেরিয়েবল নিয়ে কাজ করার জন্য apigee-access ব্যবহারের বিষয়ে আপনি আরও পড়তে পারেন।

ফ্লো ভেরিয়েবল স্কোপ বোঝা

ভেরিয়েবল স্কোপ একটি এপিআই প্রক্সি কলের প্রবাহ বা সামগ্রিক "জীবনচক্রের" সাথে সম্পর্কিত।

একটি এপিআই প্রক্সির প্রবাহের দৃশ্যায়ন

ফ্লো ভ্যারিয়েবল স্কোপ বোঝার জন্য, একটি এপিআই প্রক্সির মধ্য দিয়ে মেসেজ কীভাবে প্রবাহিত হয় তা বোঝা বা কল্পনা করা গুরুত্বপূর্ণ। একটি এপিআই প্রক্সি একটি ফ্লো হিসাবে সংগঠিত ধারাবাহিক মেসেজ প্রসেসিং ধাপ নিয়ে গঠিত। একটি প্রক্সি ফ্লো-এর প্রতিটি ধাপে, প্রক্সি তার কাছে উপলব্ধ তথ্য মূল্যায়ন করে এবং পরবর্তীতে কী করতে হবে তা সিদ্ধান্ত নেয়। এই প্রক্রিয়া চলাকালীন, প্রক্সি পলিসি কোড এক্সিকিউট করতে পারে বা শর্তসাপেক্ষ ব্রাঞ্চিং সম্পাদন করতে পারে।

নিম্নলিখিত চিত্রটি এই প্রবাহগুলির ক্রম ব্যাখ্যা করে। লক্ষ্য করুন, প্রবাহগুলি চারটি প্রধান অংশ নিয়ে গঠিত: ProxyEndpoint request , TargetEndpoint request , TargetEndpoint response , এবং ProxyEndpoint response

এই বিষয়ের বাকি অংশে আমরা যখন প্রবাহের চলকগুলো অন্বেষণ শুরু করব, তখন এই প্রবাহ কাঠামোটি মনে রাখবেন।

ভেরিয়েবল স্কোপ কীভাবে প্রক্সি ফ্লো এর সাথে সম্পর্কিত

পূর্বে বর্ণিত পদ্ধতি অনুযায়ী, একটি প্রক্সির মধ্য দিয়ে বার্তা কীভাবে প্রবাহিত হয় তা একবার কল্পনা করতে পারলেই আপনি ভেরিয়েবল স্কোপ বুঝতে শুরু করতে পারবেন। স্কোপ বলতে আমরা প্রক্সি ফ্লো লাইফ সাইকেলের সেই মুহূর্তটিকে বোঝাই, যখন একটি ভেরিয়েবল প্রথমবার ইনস্ট্যানশিয়েট করা হয়।

উদাহরণস্বরূপ, যদি আপনার ProxyEndpoint রিকোয়েস্ট সেগমেন্টের সাথে একটি পলিসি সংযুক্ত থাকে, তাহলে সেই পলিসি TargetEndpoint রিকোয়েস্ট সেগমেন্টের স্কোপে থাকা কোনো ভ্যারিয়েবল অ্যাক্সেস করতে পারবে না। এর কারণ হলো, ফ্লো-এর TargetEndpoint রিকোয়েস্ট সেগমেন্টটি এখনও এক্সিকিউট হয়নি, তাই এপিআই প্রক্সি সেই স্কোপের ভ্যারিয়েবলগুলো পপুলেট করার সুযোগ পায়নি।

নিম্নলিখিত সারণিতে ভেরিয়েবল স্কোপগুলির সম্পূর্ণ তালিকা দেওয়া হয়েছে এবং প্রক্সি ফ্লো-এর কোন পর্যায়ে সেগুলি উপলব্ধ হয় তা নির্দেশ করা হয়েছে।

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

উদাহরণস্বরূপ, Edge-এ client.ip নামে একটি বিল্ট-ইন ভ্যারিয়েবল আছে। এই ভ্যারিয়েবলটির স্কোপ হলো "প্রক্সি রিকোয়েস্ট"। যে ক্লায়েন্ট প্রক্সিকে কল করেছে, তার আইপি অ্যাড্রেস দিয়ে এটি স্বয়ংক্রিয়ভাবে পূরণ হয়ে যায়। যখন কোনো রিকোয়েস্ট প্রথম ProxyEndpoint-এ পৌঁছায়, তখন এটি পূরণ হয় এবং সম্পূর্ণ প্রক্সি ফ্লো লাইফ সাইকেল জুড়ে উপলব্ধ থাকে।

target.url নামে আরেকটি বিল্ট-ইন ভ্যারিয়েবল আছে। এই ভ্যারিয়েবলটির স্কোপ হলো "টার্গেট রিকোয়েস্ট"। ব্যাক-এন্ড টার্গেটে পাঠানো রিকোয়েস্ট URL দিয়ে TargetEndpoint রিকোয়েস্ট সেগমেন্টে এটি পূরণ করা হয়। আপনি যদি ProxyEndpoint রিকোয়েস্ট সেগমেন্টে target.url অ্যাক্সেস করার চেষ্টা করেন, তাহলে আপনি একটি NULL ভ্যালু পাবেন। স্কোপের মধ্যে আসার আগে যদি আপনি এই ভ্যারিয়েবলটি সেট করার চেষ্টা করেন, তাহলে প্রক্সি কিছুই করে না—কোনো এরর তৈরি করে না এবং ভ্যারিয়েবলটিও সেট করে না।

ভেরিয়েবল স্কোপ সম্পর্কে কীভাবে চিন্তা করতে হয়, তা বোঝানোর জন্য এখানে একটি সহজ উদাহরণ দেওয়া হলো। ধরুন, আপনি একটি রিকোয়েস্ট অবজেক্টের সম্পূর্ণ বিষয়বস্তু (হেডার, প্যারামিটার, বডি) কপি করে কলিং অ্যাপে ফেরত পাঠানোর জন্য রেসপন্স পেলোডে অ্যাসাইন করতে চান। এই কাজের জন্য আপনি AssignMessage পলিসিটি ব্যবহার করতে পারেন। পলিসির কোডটি দেখতে এইরকম:

<AssignMessage name="CopyRequestToResponse">
    <AssignTo type="response" createNew="false">response</AssignTo>
    <Copy source="request"/>
</AssignMessage>

এই পলিসিটি কেবল request অবজেক্টটি কপি করে response অবজেক্টে অ্যাসাইন করে দেয়। কিন্তু প্রক্সি ফ্লো-তে এই পলিসিটি কোথায় রাখা উচিত? উত্তর হলো, এটি অবশ্যই TargetEndpoint রেসপন্স-এ রাখতে হবে, কারণ response ভ্যারিয়েবলটির স্কোপ হলো "টার্গেট রেসপন্স"।

প্রবাহ ভেরিয়েবল উল্লেখ করা

Apigee Edge-এর সমস্ত বিল্ট-ইন ভেরিয়েবল ডট-নোটেশন নামকরণের রীতি অনুসরণ করে। এই রীতিটি ভেরিয়েবলের উদ্দেশ্য নির্ধারণ করা সহজ করে তোলে। উদাহরণস্বরূপ, system.time.hour এবং request.content

Apigee প্রাসঙ্গিক ভেরিয়েবলগুলোকে যথাযথভাবে সাজানোর জন্য বিভিন্ন প্রিফিক্স সংরক্ষণ করে। এই প্রিফিক্সগুলো হলো:

  • request
  • response
  • system
  • target

কোনো পলিসিতে ভেরিয়েবল উল্লেখ করতে হলে, সেটিকে দ্বিতীয় বন্ধনীর মধ্যে রাখুন। উদাহরণস্বরূপ, নিম্নলিখিত AssignMessage পলিসিটি client.ip ভেরিয়েবলের মান নিয়ে Client-IP নামক একটি রিকোয়েস্ট হেডারে রাখে।

<AssignMessage name="set-ip-in-header">
    <AssignTo createNew="false" transport="http" type="request">request</AssignTo>
    <Set>
        <Headers>
            <Header name="Client-IP">{client.ip}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>

শর্তসাপেক্ষ ফ্লো-তে দ্বিতীয় বন্ধনী (curly braces) আবশ্যক নয়। নিম্নলিখিত উদাহরণ শর্তটি request.header.accept ভেরিয়েবলটিকে মূল্যায়ন করে:

<Step>
    <Condition>request.header.accept = "application/json"</Condition>
    <Name>XMLToJSON</Name>
</Step>

আপনি জাভাস্ক্রিপ্ট এবং জাভা কোডেও ফ্লো ভেরিয়েবল রেফারেন্স করতে পারেন। আরও তথ্যের জন্য দেখুন:

প্রবাহ চলকের ডেটা টাইপ

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

আপনি নিজে হাতে যে ভেরিয়েবল তৈরি করেন, তা তৈরির সময় দেওয়া টাইপটিই গ্রহণ করে এবং অনুমোদিত ভ্যালুর টাইপের উপর নির্ভর করে। উদাহরণস্বরূপ, Node.js কোডে তৈরি ভেরিয়েবলগুলো Number, String, Boolean, null বা undefined-এর মধ্যে সীমাবদ্ধ থাকে।

নীতিমালায় প্রবাহ চলক ব্যবহার করা

অনেক পলিসি তাদের স্বাভাবিক কার্য সম্পাদনের অংশ হিসেবে ফ্লো ভেরিয়েবল তৈরি করে। পলিসি রেফারেন্স এই সমস্ত পলিসি-নির্দিষ্ট ভেরিয়েবলগুলোকে নথিভুক্ত করে।

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

কিছু পলিসি ভেরিয়েবল ডিবাগিংয়ের জন্য উপযোগী। উদাহরণস্বরূপ, একটি প্রক্সি ফ্লো-এর কোনো নির্দিষ্ট মুহূর্তে কোন ভেরিয়েবলগুলো সেট করা হয়েছিল, তা দেখার জন্য আপনি ট্রেস টুল ব্যবহার করতে পারেন।

ExtractVariables পলিসি আপনাকে মেসেজ থেকে সংগৃহীত ডেটা দিয়ে কাস্টম ভেরিয়েবল পূরণ করার সুযোগ দেয়। আপনি কোয়েরি প্যারামিটার, হেডার এবং অন্যান্য ডেটা সংগ্রহ করতে পারেন। উদাহরণস্বরূপ, আপনি মেসেজ থেকে নির্দিষ্ট ডেটা বের করার জন্য প্যাটার্ন ব্যবহার করে রিকোয়েস্ট এবং রেসপন্স মেসেজ পার্স করতে পারেন।

নিম্নলিখিত উদাহরণে, এক্সট্র্যাক্ট ভ্যারিয়েবলস একটি রেসপন্স মেসেজ পার্স করে এবং সেই রেসপন্স থেকে নেওয়া নির্দিষ্ট ডেটা সংরক্ষণ করে। পলিসিটি geocoderesponse.latitude এবং geocoderesponse.longitude নামে দুটি কাস্টম ভ্যারিয়েবল তৈরি করে এবং সেগুলিতে মান নির্ধারণ করে দেয়।

<ExtractVariables name="ParseGeocodingResponse">
  <Source>response</Source>
  <VariablePrefix>geocoderesponse</VariablePrefix>
  <JSONPayload>
    <Variable name="latitude">
      <JSONPath>$.results[0].geometry.location.lat</JSONPath>
    </Variable>
    <Variable name="longitude">
      <JSONPath>$.results[0].geometry.location.lng</JSONPath>
    </Variable>
  </JSONPayload>
</ExtractVariables>

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

জাভাস্ক্রিপ্ট কোডে ফ্লো ভেরিয়েবল নিয়ে কাজ করা

আপনি এপিআই প্রক্সির প্রেক্ষাপটে চলমান জাভাস্ক্রিপ্ট কোডে সরাসরি ভেরিয়েবল অ্যাক্সেস ও সেট করতে পারেন। Apigee জাভাস্ক্রিপ্ট অবজেক্ট মডেলের মাধ্যমে, Edge-এ চলমান জাভাস্ক্রিপ্ট প্রক্সি ফ্লো ভেরিয়েবলগুলোতে সরাসরি অ্যাক্সেস পায়।

জাভাস্ক্রিপ্ট কোডে ভেরিয়েবল অ্যাক্সেস করতে, এই অবজেক্টগুলোর যেকোনোটির গেটার/সেটার মেথড কল করুন:

  • context
  • proxyRequest
  • proxyResponse
  • targetRequest
  • targetResponse

যেমনটি আপনি দেখতে পাচ্ছেন, এই অবজেক্ট রেফারেন্সগুলি প্রক্সি ফ্লো মডেলের পরিচিত অংশগুলির সাথে ম্যাপ করে, যেমনটি পূর্বে "একটি এপিআই প্রক্সির ফ্লো ভিজ্যুয়ালাইজিং" অংশে ব্যাখ্যা করা হয়েছে।

context অবজেক্টটি ‘গ্লোবালি’ উপলব্ধ ভেরিয়েবল, যেমন সিস্টেম ভেরিয়েবল, এর সাথে সম্পর্কিত। উদাহরণস্বরূপ, বর্তমান বছরটি পেতে আপনি context অবজেক্টে getVariable() কল করতে পারেন:

var year = context.getVariable('system.time.year');

একইভাবে, আপনি একটি কাস্টম ভেরিয়েবলের মান সেট করতে অথবা যেকোনো রাইটেবল আউট-অফ-দ্য-বক্স ভেরিয়েবলের জন্য setVariable() কল করতে পারেন। এখানে, আমরা organization.name.myorg নামে একটি কাস্টম ভেরিয়েবল তৈরি করি এবং এতে একটি মান অ্যাসাইন করি।

var org = context.setVariable('organization.name.myorg', value);

যেহেতু এই ভেরিয়েবলটি context অবজেক্ট দিয়ে তৈরি করা হয়েছে, তাই এটি সমস্ত ফ্লো সেগমেন্টের জন্য উপলব্ধ থাকবে (মূলত, এটি একটি গ্লোবাল ভেরিয়েবল তৈরি করার মতোই)।

আপনি JavaCallout পলিসি ব্যবহার করে এক্সিকিউট করা জাভা কোডেও প্রক্সি ফ্লো ভেরিয়েবল পেতে বা সেট করতে পারেন।

Node.js অ্যাপ্লিকেশনে ফ্লো ভেরিয়েবল অ্যাক্সেস করা

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

আপনার যা মনে রাখা দরকার

প্রবাহ চলক সম্পর্কে মনে রাখার মতো কয়েকটি গুরুত্বপূর্ণ বিষয় নিচে দেওয়া হলো:

  • কিছু রেডিমেড ভেরিয়েবল প্রক্সি নিজেই স্বয়ংক্রিয়ভাবে ইনস্ট্যানশিয়েট ও পপুলেট করে। ফ্লো ভেরিয়েবল রেফারেন্সে এগুলি নথিভুক্ত করা আছে।
  • আপনি কাস্টম ভেরিয়েবল তৈরি করতে পারেন যা প্রক্সি ফ্লোতে ব্যবহারের জন্য উপলব্ধ থাকে। AssignMessage পলিসি এবং JavaScript পলিসির মতো পলিসি ব্যবহার করে এবং Node.js কোডেও ভেরিয়েবল তৈরি করা সম্ভব।
  • ভেরিয়েবলের একটি স্কোপ বা পরিধি থাকে। উদাহরণস্বরূপ, যখন প্রথম প্রক্সি কোনো অ্যাপ থেকে একটি অনুরোধ পায়, তখন কিছু ভেরিয়েবল স্বয়ংক্রিয়ভাবে পূরণ হয়ে যায়। অন্যান্য ভেরিয়েবলগুলো প্রক্সির রেসপন্স ফ্লো সেগমেন্টে পূরণ হয়। এই রেসপন্স ভেরিয়েবলগুলো রেসপন্স সেগমেন্টটি এক্সিকিউট না হওয়া পর্যন্ত অনির্ধারিত থাকে।
  • পলিসি কার্যকর হওয়ার সময়, সেগুলো পলিসি-নির্দিষ্ট ভেরিয়েবল তৈরি ও তাতে তথ্য যোগ করতে পারে। প্রতিটি পলিসির ডকুমেন্টেশনে এই সমস্ত প্রাসঙ্গিক পলিসি-নির্দিষ্ট ভেরিয়েবলের তালিকা দেওয়া থাকে।
  • কন্ডিশনাল ফ্লো সাধারণত এক বা একাধিক ভেরিয়েবল মূল্যায়ন করে। কন্ডিশনাল ফ্লো তৈরি করতে চাইলে আপনাকে ভেরিয়েবল সম্পর্কে বুঝতে হবে।
  • অনেক পলিসিতে ইনপুট বা আউটপুট হিসেবে ভ্যারিয়েবল ব্যবহার করা হয়। যেমন, একটি পলিসি দ্বারা তৈরি করা কোনো ভ্যারিয়েবল পরে অন্য পলিসিতে ব্যবহৃত হতে পারে।
  • আপনি সরাসরি জাভাস্ক্রিপ্ট (এবং আমাদের জাভাস্ক্রিপ্ট অবজেক্ট মডেল ) অথবা JavaCallout পলিসি ব্যবহার করে Node.js-এর ভেতর থেকেই অনেক ফ্লো ভ্যারিয়েবল পেতে ও সেট করতে পারেন, যা Edge-এ কোড এক্সিকিউট করে।

সম্পর্কিত কোড নমুনা

এপিআই প্রক্সি স্যাম্পলগুলো গিটহাবে রয়েছে এবং সেগুলো ডাউনলোড ও ব্যবহার করা সহজ। স্যাম্পলগুলো ডাউনলোড ও ব্যবহার করার তথ্যের জন্য "স্যাম্পল এপিআই প্রক্সি ব্যবহার" দেখুন। এপিআই প্রক্সি স্যাম্পলগুলোর বিবরণ এবং সেগুলোর কাজ সম্পর্কে জানতে "স্যাম্পল তালিকা" দেখুন।

যেসব নমুনা প্রক্সিতে ভেরিয়েবল এবং ভেরিয়েবল প্রসেসিং-এর ব্যবহার রয়েছে, সেগুলো হলো:

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

সম্পর্কিত বিষয়

  • একটি এপিআই প্রক্সিতে স্বয়ংক্রিয়ভাবে যুক্ত হওয়া সমস্ত ভেরিয়েবল ফ্লো ভেরিয়েবল রেফারেন্সে তালিকাভুক্ত থাকে। এই রেফারেন্সে প্রতিটি ভেরিয়েবলের টাইপ এবং স্কোপও উল্লেখ করা থাকে।
  • কোনো নির্দিষ্ট পলিসি কোন কোন ভেরিয়েবলে ডেটা যোগ করে তা জানতে চাইলে, পলিসিটির রেফারেন্স টপিকটি দেখুন। উদাহরণস্বরূপ, কোটা পলিসি রেফারেন্সে ফ্লো ভেরিয়েবলস দেখুন।