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

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

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

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

ফ্লো ভেরিয়েবল API প্রক্সি ফ্লোয়ের মধ্যে থাকে এবং এগুলি API ট্রানজ্যাকশনে স্টেট ট্র্যাক করে, ঠিক যেভাবে কোনও সফ্টওয়্যার প্রোগ্রামে নামযুক্ত ভেরিয়েবল স্টেট ট্র্যাক করে। ফ্লো ভেরিয়েবল এই ধরনের তথ্য সেভ করে:

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

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

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

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

নীতি ও শর্তসাপেক্ষ ফ্লো-তে ফ্লো ভেরিয়েবল ব্যবহার করা হয়:

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

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

  • কন্ডিশনাল ফ্লো, 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 নীতি প্রয়োগ করা হয়। API প্রক্সি কনফিগারেশনে এই ধরনের প্যাটার্ন সাধারণত ব্যবহার করা হয়।

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

এখন, আপনি হয়ত ভাবছেন, request.verb, client.ip এবং system.time-এর মতো ভেরিয়েবল কোথা থেকে আসে? এগুলি কখন ইনস্ট্যানশিয়েট করা হয় এবং ভ্যালু দিয়ে পপুলেট করা হয়? কখন ভেরিয়েবল তৈরি করা হয় এবং কখন সেগুলি আপনার কাছে উপলভ্য থাকে তা বুঝতে সাহায্য করতে, ফ্লো ভেরিয়েবলের স্কোপ বোঝা দেখুন।

JavaScript নীতি দিয়ে কল করা JavaScript কোডে ফ্লো ভেরিয়েবল

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

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

জাভাস্ক্রিপ্ট ব্যবহার করে ভেরিয়েবল রিড ও সেট করার এই টেকনিকটি AssignMessage নীতি (আগে দেখানো হয়েছে) ব্যবহার করে আপনি যা করতে পারেন তার মতোই। Edge-এ একই ধরনের কাজ করার এটি আরেকটি উপায়। মনে রাখার বিষয় হল, JavaScript নীতি দ্বারা এক্সিকিউট করা JavaScript 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-এ ফ্লো ভেরিয়েবেল অ্যাক্সেস করা লিঙ্কে গিয়ে apigee-access ব্যবহার করে ভেরিয়েবেল নিয়ে কাজ করার ব্যাপারে আরও জানতে পারবেন।

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

ভেরিয়েবল স্কোপ এপিআই প্রক্সি কলের ফ্লো বা সামগ্রিক "লাইফ সাইকেল"-এর সাথে সম্পর্কিত।

API প্রক্সির ফ্লো ভিজ্যুয়ালাইজ করা

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

নিচের ছবিতে এই ফ্লোয়ের ক্রম দেখানো হয়েছে। ফ্লো কীভাবে চারটি প্রধান অংশ নিয়ে গঠিত তা লক্ষ্য করুন: ProxyEndpoint অনুরোধ, TargetEndpoint অনুরোধ, TargetEndpoint উত্তর এবং ProxyEndpoint উত্তর।

এই বিষয়ের বাকি অংশ জুড়ে ফ্লো ভেরিয়েবল এক্সপ্লোর করার সময় এই ফ্লো স্ট্রাকচারটি মাথায় রাখবেন।

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

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

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

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

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

যেমন, Edge-এ client.ip নামের একটি বিল্ট-ইন ভেরিয়েবল আছে। এই ভেরিয়েবলের "প্রক্সি অনুরোধ" স্কোপ আছে। এটি ক্লায়েন্টের 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 রেসপন্সে প্লেস করতে হবে, কারণ রেসপন্স ভেরিয়েবলের স্কোপ হল "টার্গেট রেসপন্স"।

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

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>

শর্তসাপেক্ষ ফ্লোতে, কার্লি ব্রেসেস দেওয়ার প্রয়োজন নেই। নিচে দেওয়া উদাহরণ কন্ডিশন request.header.accept ভেরিয়েবলের মূল্যায়ন করে:

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

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

ফ্লো ভেরিয়েবেলের ডেটার ধরন

ফ্লো ভেরিয়েবলের প্রতিটি প্রপার্টির একটি সুনির্দিষ্ট ডেটার ধরন থাকে, যেমন String, Long, Integer, Boolean বা Collection. আপনি ফ্লো ভেরিয়েবল রেফারেন্স থেকে ডেটার ধরন সম্পর্কে জানতে পারবেন। কোনও নীতির মাধ্যমে তৈরি করা ভেরিয়েবলের জন্য, ডেটার ধরন সংক্রান্ত তথ্যের জন্য নির্দিষ্ট নীতি রেফারেন্স টপিক দেখুন।

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

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

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

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

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

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

নিম্নলিখিত উদাহরণে, Extract Variables একটি উত্তর মেসেজ পার্স করে এবং উত্তর থেকে নেওয়া নির্দিষ্ট ডেটা স্টোর করে। এই নীতি দুটি কাস্টম ভেরিয়েবল তৈরি করে, 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>

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

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

আপনি API প্রক্সির কনটেক্সটে এক্সিকিউট করা JavaScript কোডে সরাসরি ভেরিয়েবল অ্যাক্সেস ও সেট করতে পারবেন। Apigee জাভাস্ক্রিপ্ট অবজেক্ট মডেলের মাধ্যমে, Edge-এ এক্সিকিউট করা জাভাস্ক্রিপ্টের প্রক্সি ফ্লো ভেরিয়েবেলে সরাসরি অ্যাক্সেস থাকে।

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

  • context
  • proxyRequest
  • proxyResponse
  • targetRequest
  • targetResponse

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

context অবজেক্টটি সিস্টেম ভেরিয়েবলের মতো "গ্লোবালি" উপলভ্য ভেরিয়েবলের সাথে সম্পর্কিত। যেমন, বর্তমান বছর পেতে, আপনি context অবজেক্টে getVariable() কল করতে পারেন:

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

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

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

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

এছাড়াও, আপনি Java কোডে প্রক্সি ফ্লো ভেরিয়েবল পেতে/সেট করতে পারেন যা আপনি JavaCallout নীতির মাধ্যমে এক্সিকিউট করেন।

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

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

আপনাকে কী মনে রাখতে হবে

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

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

সম্পর্কিত কোড স্যাম্পেল

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

ভেরিয়েবল ও ভেরিয়েবল প্রসেসিংয়ের ব্যবহার ফিচার করে এমন স্যাম্পেল প্রক্সির মধ্যে এগুলি অন্তর্ভুক্ত:

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

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

  • API প্রক্সিতে অটোমেটিক পূরণ হওয়া সব ভেরিয়েবল ফ্লো ভেরিয়েবল রেফারেন্সে তালিকাভুক্ত করা আছে। এছাড়াও, রেফারেন্সে প্রতিটি ভেরিয়েবলের ধরন ও স্কোপ তালিকাভুক্ত করা হয়।
  • কোনও নির্দিষ্ট নীতি কোন কোন ভেরিয়েবল পূরণ করে তা জানতে, নীতির রেফারেন্স বিষয় দেখুন। যেমন, কোটা নীতি রেফারেন্সে ফ্লো ভেরিয়েবল দেখুন।