আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
ফ্লো হলো এপিআই প্রক্সির মূল ভিত্তি। ফ্লো আপনাকে একটি এপিআই প্রক্সি দ্বারা পলিসি এবং কোড কোন ক্রমে কার্যকর হবে তা কনফিগার করার সুযোগ দিয়ে এপিআই-এর আচরণ প্রোগ্রাম করতে সক্ষম করে।
ফ্লো সম্পর্কে একটি ধারণাগত সংক্ষিপ্ত বিবরণের জন্য, “ফ্লো ব্যবহার করে একটি প্রক্সি কীভাবে কাজ করে তা নিয়ন্ত্রণ করা” দেখুন।
এই টপিকে উচ্চ স্তরে কন্ডিশনাল ফ্লো তৈরি করার এবং ফ্লো-তে লজিক (পলিসি) যোগ করার পদ্ধতি বর্ণনা করা হয়েছে। কন্ডিশন তৈরির কৌশলে এই টপিকে আলোচিত বিষয়ের চেয়েও আরও বিস্তারিত বিষয় রয়েছে। সেই বিস্তারিত বিবরণের জন্য, ‘ফ্লো ভ্যারিয়েবলের ওভারভিউ’ এবং ‘ফ্লো ভ্যারিয়েবল সহ কন্ডিশন’ দেখুন।
প্রবাহের সাথে নীতিমালা সংযুক্ত করা
নিরাপত্তা নিশ্চিত করতে, ট্র্যাফিক পরিচালনা করতে এবং মেসেজ পরিচালনা করার জন্য Edge-এ বিভিন্ন ধরনের পূর্বনির্ধারিত পলিসি রয়েছে। এছাড়াও, পলিসিগুলো আপনাকে মেসেজ প্রসেসিং সম্পূর্ণরূপে কাস্টমাইজ করার জন্য আপনার নিজস্ব কাস্টম কোড যোগ করার সুযোগ দেয়।
উদাহরণস্বরূপ:
- ProxyEndpoint-এর রিকোয়েস্ট প্রি-ফ্লো -তে একটি OAuth নিরাপত্তা নীতি সংযুক্ত করুন। যেহেতু ProxyEndpoint-এর রিকোয়েস্ট প্রি-ফ্লো পাইপলাইনের প্রথম ফ্লো, তাই কোনো রিকোয়েস্ট আপনার নিরাপত্তা নীতি লঙ্ঘন করলে আপনি তা তাৎক্ষণিকভাবে প্রত্যাখ্যান করতে পারেন।
- রেসপন্সকে JSON থেকে XML-এ রূপান্তর করতে TargetEndpoint-এর রেসপন্স PostFlow- তে একটি JSON থেকে XML রূপান্তর পলিসি সংযুক্ত করুন।
- অনুরোধটি প্রক্রিয়া করার জন্য জাভাস্ক্রিপ্ট কোড কার্যকর করতে ProxyEndpoint-এর একটি Conditional Flow- এর সাথে একটি জাভাস্ক্রিপ্ট পলিসি সংযুক্ত করুন।
একবার আপনি একটি শর্তসাপেক্ষ ফ্লো তৈরি করে ফেললে, সেটি পলিসি সংযুক্ত করার জন্য উপলব্ধ হয়। ফ্লোটি নির্বাচিত থাকা অবস্থায়, ফ্লোটিতে একটি নতুন বা বিদ্যমান পলিসি যোগ করতে রিকোয়েস্ট বা রেসপন্স ডায়াগ্রামে থাকা + স্টেপ আইকনে ক্লিক করুন।


নির্বাচিত ফ্লো-তে পলিসিটি সংযুক্ত করার মাধ্যমে, আপনি এপিআই প্রক্সিকে এমনভাবে কনফিগার করছেন যাতে এটি শুধুমাত্র সেই ফ্লো ইউআরআই এবং ভার্ব কম্বিনেশনে করা রিকোয়েস্টগুলোর জন্যই কোটা পলিসি প্রয়োগ করে। উদাহরণস্বরূপ, যদি আপনি রিকোয়েস্টের 'learn ' ফ্লো-তে পলিসিটি সংযুক্ত করেন, তাহলে প্রক্সি এডিটরের কোড ভিউতে নিম্নলিখিত XML-টি তৈরি হবে:
<ProxyEndpoint name="default">
...
<Flow name="issue">
<Description/>
<Request>
<Step>
<Name>Quota-2</Name>
</Step>
</Request>
<Response/>
<Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition>
</Flow>
...
</ProxyEndpoint>এই কনফিগারেশনে, যদি এপিআই প্রক্সিতে ... /issue/** (অর্থাৎ, শেষ ফরওয়ার্ড স্ল্যাশের পর URI-তে /issue/ এর সাথে যেকোনো কিছু) URI প্যাটার্ন সহ কোনো GET রিকোয়েস্ট আসে, তাহলে সেই এপিআই কলে কোটা আরোপ করা হয়।
শর্তসাপেক্ষ প্রবাহ সম্পর্কে
PreFlow বা PostFlow-এর সাথে সংযুক্ত যেকোনো পলিসি সর্বদা কার্যকর হয়। তবে, একটি শর্তাধীন ফ্লো-এর পলিসিগুলো কেবল তখনই কার্যকর হয়, যখন ফ্লো-টির শর্তটি সত্য বলে প্রমাণিত হয়।
একটি অনুরোধ এবং প্রতিক্রিয়া প্রক্রিয়াকরণের সময়, প্রতিটি সেগমেন্টে কেবল একটি শর্তাধীন ফ্লো কার্যকর করা হয়—প্রথম সেই ফ্লোটি, যার শর্তটি সত্য বলে প্রমাণিত হয়। এর মানে হলো, আপনি নিম্নলিখিত প্রতিটির অংশ হিসাবে একটি শর্তাধীন ফ্লো কার্যকর করতে পারেন:
- প্রক্সিএন্ডপয়েন্টের অনুরোধ পাইপলাইন
- টার্গেটএন্ডপয়েন্টের অনুরোধ পাইপলাইন
- প্রক্সিএন্ডপয়েন্টের প্রতিক্রিয়া পাইপলাইন
- টার্গেটএন্ডপয়েন্টের প্রতিক্রিয়া পাইপলাইন
ভিডিও: কন্ডিশনাল ফ্লো সম্পর্কে আরও জানতে সংক্ষিপ্ত ভিডিওটি দেখুন।
উদাহরণস্বরূপ, নিম্নলিখিত ProxyEndpoint সংজ্ঞাটি একটি শর্তসাপেক্ষ প্রবাহ দেখায় যা API প্রক্সিতে যেকোনো HTTP GET অনুরোধের ক্ষেত্রে ProxyEndpoint দ্বারা সম্পাদিত হয়:
<ProxyEndpoint name="default">
<PreFlow>
<Request/>
<Response/>
</PreFlow>
<Flows>
<Flow name="Flow-1">
<Condition>request.verb="GET"</Condition>
<Request/>
<Response/>
</Flow>
</Flows>
<PostFlow>
<Request/>
<Response/>
</PostFlow>
...
</ProxyEndpoint>লক্ষ্য করুন যে শর্তটিতে `request.verb` ফ্লো ভেরিয়েবলটির উল্লেখ রয়েছে। ফ্লো ভেরিয়েবল হলো নামযুক্ত রেফারেন্স যা Edge দ্বারা প্রক্রিয়াকৃত একটি API ট্রানজ্যাকশনের সাথে সম্পর্কিত স্টেট তথ্য ধারণ করে। Edge অনেকগুলো স্টেট ভেরিয়েবল সংজ্ঞায়িত করে, যেগুলো আপনি রেফারেন্স হিসেবে ব্যবহার করতে পারেন।
RESTful সার্ভিস হলো এপিআই রিসোর্সের একটি সংগ্রহ। একটি এপিআই রিসোর্স হলো একটি ইউআরআই পাথ ফ্র্যাগমেন্ট যা এমন কোনো সত্তাকে শনাক্ত করে, যা ডেভেলপাররা আপনার এপিআই কল করার মাধ্যমে অ্যাক্সেস করতে পারে। উদাহরণস্বরূপ, যদি আপনার সার্ভিস ব্যাকএন্ড আবহাওয়ার রিপোর্ট এবং পূর্বাভাস প্রদান করে, তাহলে আপনার এপিআই দুটি কন্ডিশনাল ফ্লো সংজ্ঞায়িত করতে পারে যা সেই এপিআই রিসোর্সগুলোর সাথে ম্যাপ করা থাকে: /reports এবং /forecasts । যখন কোনো এপিআই কলের ইউআরএল-এ সেই রিসোর্সগুলোর একটি অন্তর্ভুক্ত থাকে, তখন শর্তটি সত্য বলে বিবেচিত হয় এবং কন্ডিশনাল ফ্লো-এর সাথে সংযুক্ত লজিকটি কার্যকর হয়।
এরপর অ্যাপ ডেভেলপাররা নিম্নলিখিত ফর্ম্যাটে একটি URL-এ অনুরোধ পাঠিয়ে আপনার রিসোর্সগুলি অ্যাক্সেস করে:
http://myAPIs.myCo.com/weather/reports
অথবা:
http://myAPIs.myCo.com/weather/forecasts
একটি এপিআই প্রক্সিতে, আপনি একটি নির্দিষ্ট রিসোর্সের সাথে সঙ্গতিপূর্ণ একটি শর্তসাপেক্ষ ফ্লো সংজ্ঞায়িত করতে পারেন:
<ProxyEndpoint name="default">
<PreFlow>
<Request/>
<Response/>
</PreFlow>
<Flows>
<Flow name="Flow-1">
<Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition>
<Request/>
<Response/>
</Flow>
<Flow name="Flow-2">
<Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition>
<Request/>
<Response/>
</Flow>
</Flows>
<PostFlow>
<Request/>
<Response/>
</PostFlow>
...
</ProxyEndpoint> এই উদাহরণে, আপনি proxy.pathsuffix ফ্লো ভেরিয়েবলটি রেফারেন্স করছেন, যেটিতে এপিআই প্রক্সি অ্যাক্সেস করতে ব্যবহৃত ইউআরএল-এর সাফিক্স অংশটি থাকে। এরপর আপনি প্রতিটি রিসোর্সের জন্য কন্ডিশনাল ফ্লো-তে ভিন্ন ভিন্ন পলিসি সংযুক্ত করতে পারেন।
শর্তসাপেক্ষ প্রবাহ যোগ করা
এই সংক্ষিপ্ত উদাহরণে, আপনি এমন একটি ফ্লো সেট আপ করবেন যা শুধুমাত্র তখনই কার্যকর হবে যখন অনুরোধ বার্তাটি একটি HTTP GET হবে।
একটি শর্তসাপেক্ষ ফ্লো যোগ করতে, এপিআই প্রক্সি বিল্ডারে ডেভেলপ ট্যাবটি নির্বাচন করুন।

কাঙ্ক্ষিত এন্ডপয়েন্টে থাকা + আইকনটিতে ক্লিক করুন।

নতুন কন্ডিশনাল ফ্লো ফর্মটি আপনাকে ফ্লো-টির নাম দিতে এবং একটি শর্ত কনফিগার করতে দেয়। নিম্নলিখিত উদাহরণে, আপনি একটি সাধারণ শর্ত যোগ করেছেন যা বেস পাথের পরের যেকোনো URI-তে GET ভার্বের ( PUT , POST ইত্যাদির পরিবর্তে) জন্য রিকোয়েস্ট মেসেজের HTTP মূল্যায়ন করে।

( ফ্লো ভেরিয়েবল এবং কন্ডিশন ব্যবহার করে কীভাবে শর্তসাপেক্ষ বিবৃতি তৈরি করতে হয় তা শিখুন।)
ফ্লো-১ নামের নতুন ফ্লোটি এখন নেভিগেটর মেনুতে দেখা যাচ্ছে।

এখন ProxyEndpoint-এর XML কনফিগারেশনটি পর্যবেক্ষণ করুন। Navigator মেনু থেকে Flow-1 নির্বাচন করুন।
আপনি নিম্নলিখিত কনফিগারেশনটি দেখতে পাবেন।
<PreFlow name="PreFlow">
<Request/>
<Response/>
</PreFlow>
<Flows>
<Flow name="Flow-1">
<Request/>
<Response/>
<Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
</Flow>
</Flows>
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>পরবর্তী পদক্ষেপ
নিম্নলিখিত বিষয়গুলোতে শর্ত তৈরি করা এবং ভেরিয়েবল ব্যবহার সম্পর্কে আরও বিস্তারিত আলোচনা করা হয়েছে: