আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
প্রবাহ হল API প্রক্সিগুলির মৌলিক বিল্ডিং ব্লক। একটি API প্রক্সি দ্বারা নীতি এবং কোড নির্বাহ করা হয় এমন ক্রমটি কনফিগার করার অনুমতি দিয়ে ফ্লো আপনাকে একটি API-এর আচরণ প্রোগ্রাম করতে সক্ষম করে৷
প্রবাহের ধারণাগত ওভারভিউয়ের জন্য, প্রক্সি কীভাবে প্রবাহের সাথে কার্যকর হয় তা নিয়ন্ত্রণ করা দেখুন।
এই বিষয়টি বর্ণনা করে যে কীভাবে শর্তসাপেক্ষ প্রবাহ তৈরি করতে হয় এবং উচ্চ স্তরে প্রবাহে যুক্তি (নীতি) যোগ করতে হয়। পরিস্থিতি তৈরির শিল্পে এই বিষয়ে যা বলা হয়েছে তার চেয়ে আরও বিশদ জড়িত। সেই বিশদ বিবরণের জন্য, ফ্লো ভেরিয়েবল সহ ফ্লো ভেরিয়েবল এবং শর্তগুলির ওভারভিউ দেখুন।
প্রবাহের সাথে নীতি সংযুক্ত করা হচ্ছে
Edge নিরাপত্তা বাস্তবায়ন, ট্রাফিক পরিচালনা এবং বার্তা ম্যানিপুলেট করার জন্য বিভিন্ন ধরণের পূর্বনির্ধারিত নীতি নিয়ে আসে। উপরন্তু, নীতিগুলি আপনাকে সম্পূর্ণরূপে বার্তা প্রক্রিয়াকরণ কাস্টমাইজ করতে আপনার নিজস্ব কাস্টম কোড যোগ করতে দেয়।
যেমন:
- ProxyEndpoint এর PreFlow অনুরোধের সাথে একটি OAuth নিরাপত্তা নীতি সংযুক্ত করুন। যেহেতু ProxyEndpoint-এর অনুরোধ PreFlow হল পাইপলাইনের প্রথম প্রবাহ, আপনি অবিলম্বে একটি অনুরোধ প্রত্যাখ্যান করতে পারেন যদি এটি আপনার নিরাপত্তা নীতি লঙ্ঘন করে।
- JSON থেকে XML-এ একটি প্রতিক্রিয়া রূপান্তর করতে TargetEndpoint এর প্রতিক্রিয়া পোস্টফ্লোতে XML রূপান্তর নীতিতে একটি JSON সংযুক্ত করুন।
- অনুরোধটি প্রক্রিয়া করার জন্য জাভাস্ক্রিপ্ট কোড চালানোর জন্য প্রক্সিএন্ডপয়েন্টের একটি শর্তাধীন প্রবাহের সাথে একটি জাভাস্ক্রিপ্ট নীতি সংযুক্ত করুন
একবার আপনি একটি শর্তাধীন প্রবাহ তৈরি করলে, এটি নীতি সংযুক্তির জন্য উপলব্ধ। প্রবাহটি নির্বাচিত হলে, প্রবাহে একটি নতুন বা বিদ্যমান নীতি যোগ করতে অনুরোধ বা প্রতিক্রিয়া চিত্রের + ধাপ আইকনে ক্লিক করুন।
নির্বাচিত প্রবাহে নীতি সংযুক্ত করে, আপনি শুধুমাত্র সেই ফ্লো URI এবং ক্রিয়া সংমিশ্রণে করা অনুরোধগুলির জন্য কোটা নীতি প্রয়োগ করতে API প্রক্সি কনফিগার করছেন৷ উদাহরণস্বরূপ, আপনি যদি অনুরোধে শেখার প্রবাহের সাথে নীতিটি সংযুক্ত করেন, তাহলে প্রক্সি সম্পাদকের কোড ভিউতে নিম্নলিখিত 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>
এই কনফিগারেশনে, যদি API প্রক্সিতে URI প্যাটার্নের সাথে একটি GET অনুরোধ আসে ... /issue/** (/issue/ শেষ ফরোয়ার্ড স্ল্যাশের পরে URI-তে যেকোনো কিছু সহ), সেই API কলে কোটা প্রয়োগ করা হয় .
শর্তাধীন প্রবাহ সম্পর্কে
প্রিফ্লো বা পোস্টফ্লো-এর সাথে সংযুক্ত যেকোন নীতি সর্বদা কার্যকর করা হয়। যাইহোক, শর্তসাপেক্ষ প্রবাহের নীতিগুলি শুধুমাত্র তখনই কার্যকর করা হয় যখন প্রবাহের অবস্থা সত্যে মূল্যায়ন করা হয়।
একটি অনুরোধ এবং প্রতিক্রিয়া প্রক্রিয়াকরণের সময়, প্রতি সেগমেন্টে শুধুমাত্র একটি শর্তসাপেক্ষ প্রবাহ নির্বাহ করা হয়-- প্রথম প্রবাহ যার শর্তটি সত্যে মূল্যায়ন করে। তার মানে আপনি প্রতিটির অংশ হিসাবে একটি শর্তসাপেক্ষ প্রবাহ কার্যকর করতে পারেন:
- ProxyEndpoint এর অনুরোধ পাইপলাইন
- TargetEndpoint এর অনুরোধ পাইপলাইন
- ProxyEndpoint এর প্রতিক্রিয়া পাইপলাইন
- TargetEndpoint এর প্রতিক্রিয়া পাইপলাইন
ভিডিও: শর্তসাপেক্ষ প্রবাহ সম্পর্কে আরও জানতে একটি ছোট ভিডিও দেখুন।
উদাহরণস্বরূপ, নিম্নলিখিত প্রক্সিএন্ডপয়েন্ট সংজ্ঞাটি একটি শর্তসাপেক্ষ প্রবাহ দেখায় যা API প্রক্সিতে যেকোন HTTP GET
অনুরোধে প্রক্সিএন্ডপয়েন্ট দ্বারা কার্যকর করা হয়:
<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 ফ্লো ভেরিয়েবলকে উল্লেখ করে। একটি ফ্লো ভেরিয়েবলের নাম দেওয়া হয় রেফারেন্স যা এজ দ্বারা প্রক্রিয়াকৃত একটি API লেনদেনের সাথে সম্পর্কিত রাষ্ট্রীয় তথ্য ধারণ করে। এজ অনেক স্টেট ভেরিয়েবলকে সংজ্ঞায়িত করে যা আপনি উল্লেখ করতে পারেন।
RESTful পরিষেবাগুলি হল API সংস্থানগুলির সংগ্রহ৷ একটি API সংস্থান হল একটি URI পাথ ফ্র্যাগমেন্ট যা এমন কিছু সত্তাকে চিহ্নিত করে যা বিকাশকারীরা আপনার API কল করে অ্যাক্সেস করতে পারে৷ উদাহরণস্বরূপ, যদি আপনার পরিষেবা ব্যাকএন্ড আবহাওয়ার প্রতিবেদন এবং আবহাওয়ার পূর্বাভাস প্রদান করে, তাহলে আপনার API দুটি শর্তসাপেক্ষ প্রবাহকে সংজ্ঞায়িত করতে পারে যা সেই API সংস্থানগুলিতে মানচিত্র: /reports
এবং /forecasts
। যখন একটি API কল URL-এ সেই সম্পদগুলির মধ্যে একটি অন্তর্ভুক্ত করে, তখন শর্তটি সত্যে মূল্যায়ন করা হয় এবং শর্তাধীন প্রবাহের সাথে সংযুক্ত যুক্তিটি কার্যকর করা হয়।
অ্যাপ ডেভেলপাররা তারপর ফর্মে একটি URL-এ অনুরোধ করে আপনার সংস্থানগুলি অ্যাক্সেস করে:
http://myAPIs.myCo.com/weather/reports
বা:
http://myAPIs.myCo.com/weather/forecasts
একটি API প্রক্সিতে, আপনি একটি শর্তসাপেক্ষ প্রবাহ সংজ্ঞায়িত করতে পারেন যা একটি নির্দিষ্ট সংস্থানের সাথে মিলে যায়:
<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
ফ্লো ভেরিয়েবল উল্লেখ করেছেন, যেটিতে API প্রক্সি অ্যাক্সেস করতে ব্যবহৃত URL-এর প্রত্যয় অংশ রয়েছে। তারপর আপনি প্রতিটি সম্পদের জন্য শর্তাধীন প্রবাহে বিভিন্ন নীতি সংযুক্ত করতে পারেন।
শর্তসাপেক্ষ প্রবাহ যোগ করা হচ্ছে
এই সংক্ষিপ্ত উদাহরণে, আপনি একটি ফ্লো সেট আপ করেছেন যা শুধুমাত্র যখন অনুরোধ বার্তাটি একটি HTTP GET হয় তখনই কার্যকর হয়৷
একটি শর্তাধীন প্রবাহ যোগ করতে, API প্রক্সি বিল্ডারে বিকাশ ট্যাবটি নির্বাচন করুন৷
পছন্দসই এন্ডপয়েন্টে + আইকনে ক্লিক করুন।
নতুন শর্তাধীন প্রবাহ ফর্ম আপনাকে প্রবাহের নাম দিতে এবং একটি শর্ত কনফিগার করতে দেয়। নিম্নলিখিত উদাহরণে, আপনি একটি সাধারণ শর্ত যোগ করুন যা বেস পাথের পরে যেকোনো URI-তে একটি GET
ক্রিয়া ( PUT
, POST
ইত্যাদির বিপরীতে) জন্য অনুরোধ বার্তার HTTP মূল্যায়ন করে।
( প্রবাহ ভেরিয়েবল এবং শর্তাবলীতে শর্তসাপেক্ষ বিবৃতি কীভাবে তৈরি করতে হয় তা শিখুন।)
নতুন প্রবাহ, যাকে বলা হয় ফ্লো-1 , এখন ন্যাভিগেটর মেনুতে উপস্থিত হয়।
এখন প্রক্সিএন্ডপয়েন্টের জন্য XML কনফিগারেশন পর্যবেক্ষণ করুন। নেভিগেটর মেনুতে ফ্লো-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>
পরবর্তী পদক্ষেপ
নিম্নলিখিত বিষয়গুলি শর্ত তৈরি এবং ভেরিয়েবল ব্যবহার সম্পর্কে আরও বিশদ প্রদান করে: