আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
এই বিভাগে আপনার এপিআই প্রক্সি ফ্লো সংজ্ঞায়িত করতে ব্যবহৃত এক্সএমএল উপাদানগুলো সম্পর্কে তথ্য দেওয়া হয়েছে।
ক্রমবিন্যাস ও সিনট্যাক্স
নিম্নলিখিত উদাহরণগুলিতে ফ্লো কনফিগারেশন উপাদানগুলির স্তরবিন্যাস এবং সিনট্যাক্স দেখানো হয়েছে:
উপাদানের শ্রেণিবিন্যাস
নিম্নলিখিত উদাহরণটি <ProxyEndpoint> এবং <TargetEndpoint> এলিমেন্টগুলির মধ্যে ফ্লো কনফিগারেশন এলিমেন্টগুলির ক্রমবিন্যাস দেখায়:
<ProxyEndpoint | TargetEndpoint>
<PreFlow>
<Request>
<Step>
<Condition>
<Name>
<Response>
<Step>
<Condition>
<Name>
<Description>
<Flows>
<Flow>
<Description>
<Condition>
<Request>
<Step>
<Response>
<Step>
<Description>
<PostFlow>
<Request>
<Step>
<Response>
<Step>
<Description>
<PostClientFlow> (<ProxyEndpoint> only)
<Response>
<Description>
// Additional configuration elements
</ProxyEndpoint | TargetEndpoint>সিনট্যাক্স
নিম্নলিখিত উদাহরণটি ফ্লো কনফিগারেশন উপাদানগুলির সিনট্যাক্স দেখায়। এই উপাদানগুলির প্রত্যেকটি পরবর্তী বিভাগগুলিতে বিস্তারিতভাবে বর্ণনা করা হয়েছে:
<!-- ProxyEndpoint flow configuration file -->
<ProxyEndpoint ... >
...
<PreFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PreFlow>
<Flows name="flow_name">
<Flow name="conditional_flow_name">
<Description>flow_description</Description>
<Condition>property operator "value"</Condition>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</Flow>
</Flows>
<PostFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PostFlow>
<PostClientFlow name="flow_name">
<Description>flow_description</Description>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PostClientFlow>
...
</ProxyEndpoint>
<!-- TargetEndpoint flow configuration file -->
<TargetEndpoint ... >
...
<PreFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PreFlow>
<Flows name="flow_name">
<Flow name="conditional_flow_name">
<Description>flow_description</Description>
<Condition>property operator "value"</Condition>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</Flow>
...
</Flows>
<PostFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PostFlow>
...
</TargetEndpoint>আপনার PreFlow, Conditional Flow, PostFlow, এবং PostClientFlow-এর কার্য সম্পাদন নির্ধারণ করতে আপনি এই উপাদানগুলো ব্যবহার করেন।
<Condition>
এমন একটি স্টেটমেন্ট নির্ধারণ করে যা রানটাইমে প্রসেস করা হয়। যদি স্টেটমেন্টটির মান সত্য হয়, তবে শর্তটির সাথে যুক্ত ধাপ বা ফ্লোটি সম্পাদিত হয়। যদি স্টেটমেন্টটির মান মিথ্যা হয়, তবে ধাপ বা ফ্লোটি উপেক্ষা করা হয়।
| প্রকার | স্ট্রিং |
| মূল উপাদান(গুলি) | <Flow><Step> |
| চাইল্ড এলিমেন্ট(গুলি) | কোনোটিই না |
আপনি একটি শর্ত একটি নির্দিষ্ট ধাপে বা সম্পূর্ণ ফ্লো-তে প্রয়োগ করতে পারেন, যা নির্ভর করে আপনি এলিমেন্টটি <Flow> নাকি <Step> এলিমেন্টের মধ্যে রেখেছেন তার উপর:
// Condition can apply to just one step: // Or to the flow:<Flows><Flows><Flow><Flow><Step><Condition><Condition><Step><Name><Name>... ... ... ... ... ... </Flows> </Flows>
যদি কোনো <Step> এর ভেতরের শর্তের মান সত্য হয়, Edge সেই ধাপটি সম্পাদন করে। যদি শর্তটির মান মিথ্যা হয়, Edge সেই ধাপটি এড়িয়ে যায়।
যদি একটি <Flow> এর ভেতরের কোনো শর্ত সত্য হয়, Edge সেই ফ্লো-এর সমস্ত ধাপ সম্পন্ন করে। আর যদি শর্তটি মিথ্যা হয়, Edge পুরো ফ্লো-টি এড়িয়ে যায়।
সিনট্যাক্স
<Condition> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
<Condition>property operator "value"</Condition>
কোথায়:
- property
- ফ্লো ভেরিয়েবল প্রপার্টি যা আপনি আপনার কন্ডিশনে ব্যবহার করতে চান। উদাহরণস্বরূপ,
requestফ্লো ভেরিয়েবলেরpathএবংcontentনামের প্রপার্টি আছে। একটি কন্ডিশনে এগুলো ব্যবহার করতে, আপনাকে flow_variable [dot] property_name উল্লেখ করতে হবে:request.path request.content
ফ্লো ভেরিয়েবল এবং তাদের বৈশিষ্ট্যগুলির একটি সম্পূর্ণ তালিকার জন্য, ফ্লো ভেরিয়েবল রেফারেন্স দেখুন।
- operator
- একটি কাঠামো যা নির্ধারণ করে আপনার শর্তটি কীভাবে মূল্যায়ন করা হবে। সাধারণ অপারেটরগুলোর মধ্যে রয়েছে:
> greater than <= less than or equal to < less than >= greater than or equal to = equals && and != not equals || or ~~ JavaRegex ~ Matches /~ MatchesPath
সম্পূর্ণ তালিকার জন্য, শর্তাবলী রেফারেন্সের অপারেটরসমূহ দেখুন।
- " value "
- যে মানের সাপেক্ষে ফ্লো ভেরিয়েবল প্রপার্টিটি মূল্যায়ন করা হয়। এটি সাধারণত একটি বেসিক টাইপ, যেমন ইন্টিজার বা স্ট্রিং। উদাহরণস্বরূপ, 200 বা "/cat"। এই মানে ওয়াইল্ডকার্ড অন্তর্ভুক্ত থাকতে পারে, যেমন অ্যাস্টারিস্ক এবং প্যাটার্ন ম্যাচিংয়ের জন্য অন্যান্য অক্ষর, যা "কন্ডিশনালের সাথে প্যাটার্ন ম্যাচিং" অংশে বর্ণনা করা হয়েছে।
উদাহরণ ১
নিম্নলিখিত উদাহরণটি পরীক্ষা করে দেখে যে request ফ্লো ভেরিয়েবলের verb প্রপার্টিটি "GET" কিনা:
<!-- api-platform/reference/examples/flow-segments/condition-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> </PreFlow> ... </ProxyEndpoint>
অনুরোধটি "GET" হলে, এই উদাহরণটি "Log-Request-OK" পলিসিটি কার্যকর করে।
উদাহরণ ২
নিম্নলিখিত উদাহরণটি প্রতিক্রিয়া কোড যাচাই করে:
<!-- api-platform/reference/examples/flow-segments/condition-2.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Response> <Step> <Condition>response.status.code LesserThanOrEquals 300</Condition> <Name>Log-Response-OK</Name> </Step> <Step> <Condition>response.status.code GreaterThan 300</Condition> <Name>Log-Response-NOT-OK</Name> </Step> </Response> </PreFlow> ... </ProxyEndpoint>
কোডের মানের ওপর নির্ভর করে ভিন্ন নীতি কার্যকর করা হয়।
বৈশিষ্ট্য
<Condition> এলিমেন্টটির কোনো অ্যাট্রিবিউট নেই।
শিশু উপাদান
<Condition> এলিমেন্টের কোনো চাইল্ড এলিমেন্ট নেই।
<Description>
প্রবাহটিকে মানুষের পাঠযোগ্য ভাষায় বর্ণনা করে। নিজেকে বা অন্য ডেভেলপারদের প্রবাহ সম্পর্কে তথ্য দেওয়ার জন্য এই উপাদানটি ব্যবহার করুন। এই বর্ণনাটি বাইরে থেকে দেখা যায় না।
| প্রকার | স্ট্রিং |
| মূল উপাদান(গুলি) | <Flow><PreFlow><PostFlow> |
| চাইল্ড এলিমেন্ট(গুলি) | কোনোটিই না |
সিনট্যাক্স
<Description> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
<Description>flow_description</Description>
উদাহরণ
নিম্নলিখিত উদাহরণটি একটি <Description> এলিমেন্ট দেখায় যা একটি ফ্লো-এর উদ্দেশ্য নির্দিষ্ট করে:
<!-- api-platform/reference/examples/flow-segments/description-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>XML-to-JSON-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
বৈশিষ্ট্য
<Description> এলিমেন্টটির কোনো অ্যাট্রিবিউট নেই।
শিশু উপাদান
<Description> এলিমেন্টের কোনো চাইল্ড এলিমেন্ট নেই।
<Flow>
Edge যে পদক্ষেপগুলো সম্পাদন করে, তার একটি নির্দিষ্ট সেট নির্ধারণ করে।
| প্রকার | জটিল বস্তু |
| মূল উপাদান(গুলি) | <Flows> |
| চাইল্ড এলিমেন্ট(গুলি) | <Condition><Description><Request><Response> |
আপনি চাইলে একটি <Flow> তে একটি <Condition> নির্দিষ্ট করতে পারেন। সেক্ষেত্রে, Edge শুধুমাত্র তখনই ফ্লো-এর ধাপগুলো সম্পাদন করে, যখন শর্তটি সত্য হয়। অন্যথায়, Edge সম্পূর্ণ ফ্লো-টি এড়িয়ে যায়।
একটি <Flows> এলিমেন্টের মধ্যে একাধিক <Flow> এলিমেন্ট থাকতে পারে, যার প্রতিটির নিজস্ব শর্ত এবং ধাপ থাকে। যখন একাধিক <Flow> এলিমেন্ট থাকে, Edge শুধুমাত্র প্রথমটি কার্যকর করে, যেটিতে কোনো শর্ত নেই অথবা শর্তটি সত্য বলে প্রমাণিত হয়।
আপনি একটি ডিফল্ট ফ্লো নির্ধারণ করতে পারেন যা সর্বদা কার্যকর হবে (যদি অন্য কোনো শর্তাধীন ফ্লো কার্যকর না হয়)। আপনার এপিআই প্রক্সি কীভাবে কনফিগার করা হয়েছে তার উপর নির্ভর করে, এটি ক্ষতিকারক আক্রমণ থেকে রক্ষা করার জন্য একটি কার্যকর উপায় হতে পারে।
সিনট্যাক্স
<Flow> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
<Flow name="conditional_flow_name">
<Description>flow_description</Description>
<Condition>property operator "value"</Condition>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</Flow><Flow> এর সকল চাইল্ড এলিমেন্ট ঐচ্ছিক।
উদাহরণ ১
নিম্নলিখিত উদাহরণটি একটি সাধারণ <Flow> দেখায় যা সর্বদা "Log-Message-OK" পলিসিটি কার্যকর করে:
<!-- api-platform/reference/examples/flow-segments/flow-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-flow"> <Flow> <Request> <Step> <Name>Log-Message-OK</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
উদাহরণ ২
নিম্নলিখিত উদাহরণটি একাধিক ধাপ সহ একটি <Flow> দেখায়, যেখানে প্রতিটি ধাপের নিজস্ব শর্ত রয়েছে:
<!-- api-platform/reference/examples/flow-segments/flow-2.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>Verify-Auth-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
উদাহরণ ৩
নিম্নলিখিত উদাহরণটি একটি কন্ডিশনাল ফ্লো-তে একাধিক ফ্লো দেখায়:
<!-- api-platform/reference/examples/flow-segments/flows-2.xml --> <ProxyEndpoint name="default"> <Flows> <Flow name="my-flow-1"> <Response> <Step> <Condition>response.status.code = 200</Condition> <Name>Assign-Message-1</Name> </Step> </Response> </Flow> <Flow name="my-flow-2"> <Response> <Step> <Condition>response.status.code >= 400</Condition> <Name>Assign-Message-2</Name> </Step> </Response> </Flow> <Flow name="my-flow-3"> <Response> <Step> <Condition>response.status.code >= 300</Condition> <Name>Assign-Message-3</Name> </Step> </Response> </Flow> </Flows> ... </ProxyEndpoint>
Edge একটি সেগমেন্টে কেবল একটি ফ্লোই সম্পাদন করে; এটি প্রথম সেই ফ্লোটি সম্পাদন করে যার কোনো শর্ত নেই, অথবা যার শর্তটি সত্য বলে প্রমাণিত হয়।
বৈশিষ্ট্য
নিম্নলিখিত সারণিতে <Flow> এলিমেন্টের অ্যাট্রিবিউটগুলো বর্ণনা করা হলো:
| বৈশিষ্ট্য | প্রকার | বর্ণনা |
|---|---|---|
name | স্ট্রিং | (আবশ্যক) ফ্লো-টির জন্য একটি অনন্য আইডি। উদাহরণস্বরূপ, "My-Conditional-Flow-1"। নামে কোনো স্পেস বা অন্য কোনো বিশেষ অক্ষর থাকতে পারবে না। |
শিশু উপাদান
নিম্নলিখিত সারণিতে <Flow> এর চাইল্ড এলিমেন্টগুলো বর্ণনা করা হয়েছে:
| শিশু উপাদান | প্রকার | বর্ণনা |
|---|---|---|
<Condition> | স্ট্রিং | একটি শর্তসাপেক্ষ বিবৃতি সংজ্ঞায়িত করে যা রানটাইমে প্রক্রিয়াজাত করা হয়। যদি বিবৃতিটির মান সত্য হয়, তাহলে ফ্লোটি (এবং এর সমস্ত ধাপ) কার্যকর করা হয়। যদি বিবৃতিটির মান মিথ্যা হয়, তাহলে ফ্লোটি (এবং এর সমস্ত ধাপ) উপেক্ষা করা হয়। |
<Description> | স্ট্রিং | কার্যপ্রবাহের একটি সংক্ষিপ্ত বিবরণ প্রদান করে। এই বিবরণটি বাইরে থেকে দেখা যায় না। |
<Request> | জটিল বস্তু | অনুরোধ অংশের জন্য ধাপ ও শর্তাবলী নির্দিষ্ট করে। |
<Response> | জটিল বস্তু | প্রতিক্রিয়া পর্বের জন্য ধাপ ও শর্তাবলী নির্দিষ্ট করে। |
<Flows>
শূন্য বা তার বেশি <Flow> উপাদান ধারণ করে।
| প্রকার | জটিল বস্তু |
| মূল উপাদান(গুলি) | <ProxyEndpoint><TargetEndpoint> |
| চাইল্ড এলিমেন্ট(গুলি) | <Flow> |
যদি <Flows> মধ্যে একাধিক <Flow> এলিমেন্ট থাকে, তবে শুধুমাত্র একটি <Flow> এক্সিকিউট হবে। এটি হবে সেই প্রথম ফ্লোটি, যার কোনো <Condition> নেই, অথবা যার কন্ডিশনটি ট্রু (true) হয়।
আপনি একটি ডিফল্ট ফ্লো নির্ধারণ করতে পারেন যা সর্বদা কার্যকর হবে (যদি অন্য কোনো ফ্লো কার্যকর না হয়)। আপনার এপিআই প্রক্সি কীভাবে কনফিগার করা হয়েছে তার উপর নির্ভর করে, এটি ক্ষতিকারক আক্রমণ থেকে রক্ষা করার জন্য একটি কার্যকর উপায় হতে পারে।
সিনট্যাক্স
<Flows> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
<Flows name="flow_name">
<Flow name="conditional_flow_name">
<Description>flow_description</Description>
<Condition>property operator "value"</Condition>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</Flow>
</Flows><Flows> এর সকল চাইল্ড এলিমেন্ট ঐচ্ছিক।
উদাহরণ ১
নিম্নলিখিত উদাহরণটি একটি একক <Flow> সহ একটি সাধারণ <Flows> এলিমেন্ট দেখায়:
<!-- api-platform/reference/examples/flow-segments/flows-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>Verify-Auth-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
Edge, proxy ফ্লো ভেরিয়েবল থেকে সংগ্রহ করা পাথ সাফিক্সের উপর ভিত্তি করে এই পলিসিগুলোর মধ্যে একটি কার্যকর করে। যদি পাথ সাফিক্সটি কোনো শর্তের সাথেই না মেলে, তাহলে Edge এই ফ্লোটি কার্যকর করে না।
উদাহরণ ২
নিম্নলিখিত উদাহরণটি <Flows> মধ্যে একাধিক <Flow> এলিমেন্ট দেখায়, যার প্রতিটির নিজস্ব <Condition> রয়েছে:
<!-- api-platform/reference/examples/flow-segments/flows-2.xml --> <ProxyEndpoint name="default"> <Flows> <Flow name="my-flow-1"> <Response> <Step> <Condition>response.status.code = 200</Condition> <Name>Assign-Message-1</Name> </Step> </Response> </Flow> <Flow name="my-flow-2"> <Response> <Step> <Condition>response.status.code >= 400</Condition> <Name>Assign-Message-2</Name> </Step> </Response> </Flow> <Flow name="my-flow-3"> <Response> <Step> <Condition>response.status.code >= 300</Condition> <Name>Assign-Message-3</Name> </Step> </Response> </Flow> </Flows> ... </ProxyEndpoint>
Edge একটি সেগমেন্টে শুধুমাত্র সেই প্রথম ফ্লোটি সম্পাদন করে, যার শর্তটি সত্য বলে প্রমাণিত হয়। এরপর, Edge সেগমেন্টের বাকি ফ্লোগুলো এড়িয়ে যায়।
উদাহরণ ৩
নিম্নলিখিত উদাহরণটি একটি 'ডিফল্ট' <Flow> দেখায়:
<!-- api-platform/reference/examples/flow-segments/flows-3.xml --> <ProxyEndpoint name="default"> <Flows> <Flow name="my-conditional-flow-1"> <Response> <Step> <Condition>response.status.code = 200</Condition> <Name>Assign-Message-1</Name> </Step> </Response> </Flow> <Flow name="my-conditional-flow-2"> <Response> <Step> <Condition>response.header.someheader = "42"</Condition> <Name>Assign-Message-2</Name> </Step> </Response> </Flow> <Flow name="my-default-flow"> <Response> <Step> <Name>Assign-Message-3</Name> </Step> </Response> </Flow> </Flows> ... </ProxyEndpoint>
Edge একটি সেগমেন্টে শুধুমাত্র সেই প্রথম ফ্লোটি কার্যকর করে, যার শর্তটি সত্য বলে প্রমাণিত হয়। যদি কোনো শর্তাধীন ফ্লো কার্যকর না হয়, তাহলে এই উদাহরণে তৃতীয় ফ্লোটি (যেটিতে কোনো শর্ত নেই) কার্যকর হয়।
ক্ষতিকর আক্রমণ থেকে সুরক্ষার জন্য একটি ডিফল্ট ফ্লো একটি কার্যকর উপায় হতে পারে।
বৈশিষ্ট্য
<Flows> এলিমেন্টটির কোনো অ্যাট্রিবিউট নেই।
শিশু উপাদান
<Flows> এলিমেন্টটির নিম্নলিখিত চাইল্ড এলিমেন্টগুলো রয়েছে:
| শিশু উপাদান | প্রকার | বর্ণনা |
|---|---|---|
<Flow> | জটিল বস্তু | এমন একটি প্রবাহ যা শর্তাধীন প্রবাহের (Conditional Flow) অন্তর্ভুক্ত সম্ভাব্য ধাপগুলোর একটি সেটকে সংজ্ঞায়িত করে। |
<Name>
একটি <Flow> এর মধ্যে কার্যকর করার জন্য পলিসির আইডি নির্দিষ্ট করে।
| প্রকার | স্ট্রিং |
| মূল উপাদান(গুলি) | <Step> |
| চাইল্ড এলিমেন্ট(গুলি) | কোনোটিই না |
সিনট্যাক্স
<Name> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
<Name>policy_name</Name>
উদাহরণ
নিম্নলিখিত উদাহরণটি দুটি পলিসি দেখায় যা তাদের নাম দ্বারা ফ্লো-তে যুক্ত করা হয়:
<!-- api-platform/reference/examples/flow-segments/name-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>Verify-Auth-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
বৈশিষ্ট্য
<Name> এলিমেন্টটির কোনো অ্যাট্রিবিউট নেই।
শিশু উপাদান
<Name> এলিমেন্টের কোনো চাইল্ড এলিমেন্ট নেই।
<PostFlow>
অনুরোধ এবং প্রতিক্রিয়ার পোস্টফ্লোতে করণীয় পদক্ষেপগুলো নির্ধারণ করে।
| প্রকার | জটিল বস্তু |
| মূল উপাদান(গুলি) | <ProxyEndpoint><TargetEndpoint> |
| চাইল্ড এলিমেন্ট(গুলি) | <Description><Request><Response> |
<PostFlow> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
সিনট্যাক্স
<PostFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PostFlow>উদাহরণ
নিম্নলিখিত উদাহরণটিতে অনুরোধ এবং প্রতিক্রিয়া উভয়ের জন্য ধাপ সংজ্ঞায়িত করা একটি পোস্টফ্লো দেখানো হয়েছে:
<!-- api-platform/reference/examples/flow-segments/postflow-1.xml --> <ProxyEndpoint name="default"> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> <Response> <Step> <Name>Set-Response-Headers</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
বৈশিষ্ট্য
নিম্নলিখিত সারণিতে <PostFlow> এলিমেন্টের অ্যাট্রিবিউটগুলো বর্ণনা করা হলো:
| বৈশিষ্ট্য | প্রকার | বর্ণনা |
|---|---|---|
name | স্ট্রিং | ফ্লো-এর জন্য একটি অনন্য আইডি (এন্ডপয়েন্টের মধ্যে অনন্য)। উদাহরণস্বরূপ, "My-PostFlow-1"। এই মানে কোনো স্পেস বা অন্য বিশেষ অক্ষর থাকতে পারবে না। |
শিশু উপাদান
নিম্নলিখিত সারণিতে <PostFlow> এর চাইল্ড এলিমেন্টগুলো বর্ণনা করা হয়েছে:
| শিশু উপাদান | প্রকার | বর্ণনা |
|---|---|---|
<Description> | স্ট্রিং | প্রবাহটির একটি সংক্ষিপ্ত বিবরণ প্রদান করে। |
<Request> | জটিল বস্তু | অনুরোধের পোস্টফ্লো চলাকালীন কার্যকর করার জন্য নীতিমালা নির্ধারণ করে। |
<Response> | জটিল বস্তু | রেসপন্সের পোস্টফ্লো চলাকালীন কার্যকর করার জন্য পলিসিগুলো নির্ধারণ করে। |
<PostClientFlow>
ProxyEndpoint-এ এমন নীতিমালা নির্ধারণ করে যা শুধুমাত্র ক্লায়েন্টের কাছে প্রতিক্রিয়া ফেরত পাঠানোর পরেই কার্যকর হয়। এই নীতিমালাগুলো সাধারণত প্রতিক্রিয়া-সম্পর্কিত বার্তাগুলো লগ করে রাখে।
| প্রকার | জটিল বস্তু |
| মূল উপাদান(গুলি) | <ProxyEndpoint> |
| চাইল্ড এলিমেন্ট(গুলি) | <Description><Response> |
সিনট্যাক্স
<PostClientFlow> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
<PostClientFlow name="flow_name">
<Description>flow_description</Description>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PostClientFlow><PostClientFlow> এর সকল চাইল্ড এলিমেন্ট ঐচ্ছিক।
উদাহরণ
নিম্নলিখিত উদাহরণটি একটি সাধারণ PostClientFlow দেখায় যা একটি একক পলিসি কার্যকর করে:
<!-- api-platform/reference/examples/flow-segments/postclientflow-1.xml --> <ProxyEndpoint name="default"> <PostClientFlow name="my-postclientflows"> <Description>My first PostClientFlow. Processed after the response is sent back to the client.</Description> <Response> <Step> <Name>Message-Logging-OK</Name> </Step> </Response> </PostClientFlow> ... </ProxyEndpoint>
বৈশিষ্ট্য
নিম্নলিখিত সারণিতে <PostClientFlow> এলিমেন্টের অ্যাট্রিবিউটগুলো বর্ণনা করা হলো:
| বৈশিষ্ট্য | প্রকার | বর্ণনা |
|---|---|---|
name | স্ট্রিং | ফ্লো-টির জন্য একটি অনন্য আইডি। নামে কোনো স্পেস বা অন্য বিশেষ অক্ষর থাকতে পারবে না। উদাহরণস্বরূপ, "My-PostClientFlow-1"। |
শিশু উপাদান
নিম্নলিখিত সারণিতে <PostClientFlow> এর চাইল্ড এলিমেন্টগুলো বর্ণনা করা হয়েছে:
| শিশু উপাদান | প্রকার | বর্ণনা |
|---|---|---|
<Description> | স্ট্রিং | প্রবাহটির একটি সংক্ষিপ্ত বিবরণ প্রদান করে। |
<Response> | জটিল বস্তু | রেসপন্সের পোস্টফ্লো চলাকালীন কার্যকর করার জন্য পলিসিগুলো নির্ধারণ করে। |
<PreFlow>
অনুরোধ এবং প্রতিক্রিয়ার প্রি-ফ্লোতে কার্যকর করার জন্য নীতিমালা নির্ধারণ করে।
| প্রকার | জটিল বস্তু |
| মূল উপাদান(গুলি) | <ProxyEndpoint><TargetEndpoint> |
| চাইল্ড এলিমেন্ট(গুলি) | <Description><Request><Response> |
সিনট্যাক্স
<PreFlow> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
<PreFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PreFlow><PreFlow> এর সকল চাইল্ড এলিমেন্ট ঐচ্ছিক।
উদাহরণ
নিম্নলিখিত উদাহরণটি একটি অনুরোধ এবং একটি প্রতিক্রিয়া ফ্লো সংজ্ঞায়িত সহ একটি প্রিফ্লো দেখায়:
<!-- api-platform/reference/examples/flow-segments/preflow-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> <Response> <Step> <Condition>response.status.code LesserThanOrEquals 300</Condition> <Name>Log-Response-OK</Name> </Step> <Step> <Condition>response.status.code GreaterThan 300</Condition> <Name>Log-Response-NOT-OK</Name> </Step> </Response> </PreFlow> ... </ProxyEndpoint>
বৈশিষ্ট্য
নিম্নলিখিত সারণিতে <PreFlow> এলিমেন্টের অ্যাট্রিবিউটগুলো বর্ণনা করা হলো:
| বৈশিষ্ট্য | প্রকার | বর্ণনা |
|---|---|---|
name | স্ট্রিং | ফ্লো-টির জন্য একটি অনন্য আইডি। নামে কোনো স্পেস বা বিশেষ অক্ষর থাকতে পারবে না। উদাহরণস্বরূপ, "My-PreFlow-1"। |
শিশু উপাদান
নিম্নলিখিত সারণিতে <PreFlow> এর চাইল্ড এলিমেন্টগুলো বর্ণনা করা হয়েছে:
| শিশু উপাদান | প্রকার | বর্ণনা |
|---|---|---|
<Description> | স্ট্রিং | প্রবাহটির একটি সংক্ষিপ্ত বিবরণ প্রদান করে। |
<Request> | জটিল বস্তু | অনুরোধের প্রিফ্লো চলাকালীন কার্যকর করার জন্য নীতিমালা নির্ধারণ করে। |
<Response> | জটিল বস্তু | প্রতিক্রিয়ার প্রিফ্লো চলাকালীন কার্যকর করার জন্য নীতিমালা নির্ধারণ করে। |
<Request>
ফ্লো-এর অনুরোধ পর্বে কার্যকর করার জন্য নীতিমালা নির্ধারণ করে।
| প্রকার | জটিল বস্তু |
| মূল উপাদান(গুলি) | <Flow><PreFlow><PostFlow> |
| চাইল্ড এলিমেন্ট(গুলি) | <Condition><Step> |
সিনট্যাক্স
<Request> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request><Request> এর সকল চাইল্ড এলিমেন্ট ঐচ্ছিক।
উদাহরণ
নিম্নলিখিত উদাহরণটি প্রিফ্লো এবং পোস্টফ্লো উভয় ক্ষেত্রেই অনুরোধের জন্য সংজ্ঞায়িত ফ্লোগুলি দেখায়:
<!-- api-platform/reference/examples/flow-segments/request-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> </PreFlow> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> </PostFlow> ... </ProxyEndpoint>
বৈশিষ্ট্য
<Request> এলিমেন্টটির কোনো অ্যাট্রিবিউট নেই।
শিশু উপাদান
নিম্নলিখিত সারণিতে <Request> এর চাইল্ড এলিমেন্টগুলো বর্ণনা করা হয়েছে:
| শিশু উপাদান | প্রকার | বর্ণনা |
|---|---|---|
<Condition> | জটিল বস্তু | অনুরোধ অংশের অন্তর্গত ধাপগুলো সম্পাদিত হবে কিনা তা নির্ধারণ করে। |
<Step> | স্ট্রিং | অনুরোধ সেগমেন্টের মধ্যে কার্যকর করার জন্য একটি নীতি নির্দিষ্ট করে। |
<Response>
ফ্লো-এর রেসপন্স সেগমেন্ট চলাকালীন কার্যকর করার জন্য পলিসিগুলো নির্ধারণ করে।
| প্রকার | জটিল বস্তু |
| মূল উপাদান(গুলি) | <Flow><PreFlow><PostClientFlow><PostFlow> |
| চাইল্ড এলিমেন্ট(গুলি) | <Condition><Step> |
সিনট্যাক্স
<Response> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response><Response> এর সকল চাইল্ড এলিমেন্ট ঐচ্ছিক।
উদাহরণ
নিম্নলিখিত উদাহরণটি রেসপন্সের জন্য প্রিফ্লো এবং পোস্টফ্লো উভয় ক্ষেত্রেই সংজ্ঞায়িত ফ্লোগুলো দেখায়:
<!-- api-platform/reference/examples/flow-segments/response-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Response> <Step> <Condition>response.status.code LesserThanOrEquals 300</Condition> <Name>Log-Response-OK</Name> </Step> <Step> <Condition>response.status.code GreaterThan 300</Condition> <Name>Log-Response-NOT-OK</Name> </Step> </Response> </PreFlow> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Response> <Step> <Name>Set-Response-Headers</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
বৈশিষ্ট্য
<Response> এলিমেন্টটির কোনো অ্যাট্রিবিউট নেই।
শিশু উপাদান
নিম্নলিখিত সারণিতে <Response> এর চাইল্ড এলিমেন্টগুলো বর্ণনা করা হয়েছে:
| শিশু উপাদান | প্রকার | বর্ণনা |
|---|---|---|
<Condition> | স্ট্রিং | প্রতিক্রিয়া অংশের অন্তর্ভুক্ত ধাপগুলো সম্পাদিত হবে কিনা তা নির্ধারণ করে। |
<Step> | স্ট্রিং | রেসপন্স সেগমেন্টের মধ্যে কার্যকর করার জন্য একটি পলিসি নির্দিষ্ট করে। |
<Step>
কার্যকর করার জন্য একটি নীতি এবং (ঐচ্ছিকভাবে) সেই নীতিটি কার্যকর করা হবে কিনা তা নির্ধারণকারী একটি শর্ত নির্দিষ্ট করে।
| প্রকার | জটিল বস্তু |
| মূল উপাদান(গুলি) | <Request><Response> |
| চাইল্ড এলিমেন্ট(গুলি) | <Condition><Name> |
একটি <Flow> তে একাধিক ধাপ সংজ্ঞায়িত করা থাকতে পারে, এবং ধাপগুলো ফ্লো-এর XML-এ সংজ্ঞায়িত ক্রম অনুসারে সম্পাদিত হয়।
শর্তবিহীন ধাপগুলো সর্বদা কার্যকর হয়। শর্তযুক্ত ধাপগুলো কেবল তখনই কার্যকর হয়, যখন শর্তটি সত্য হয়। যদি শর্তটি মিথ্যা হয়, তাহলে Edge সেই ধাপটি এড়িয়ে যায়।
সিনট্যাক্স
<Step> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
<Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step>
প্রতিটি <Step> জন্য কেবল একটি <Condition> এবং একটি <Name> থাকতে পারে, কিন্তু একটি <Flow> -এর মধ্যে একাধিক ধাপ থাকতে পারে।
<Step> এর সকল চাইল্ড এলিমেন্ট ঐচ্ছিক।
উদাহরণ ১
নিম্নলিখিত উদাহরণটিতে শর্তসহ একটি ধাপ এবং শর্ত ছাড়া একটি ধাপ দেখানো হয়েছে:
<!-- api-platform/reference/examples/flow-segments/step-1.xml --> <ProxyEndpoint name="default"> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> <Response> <Step> <Name>Set-Response-Headers</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
শর্ত ছাড়া ধাপটি রিকোয়েস্ট সেগমেন্ট চলাকালীন প্রতিবার কার্যকর হবে। শর্তসহ ধাপটি রেসপন্স সেগমেন্ট চলাকালীন শুধুমাত্র তখনই কার্যকর হবে, যখন রিকোয়েস্টটি একটি "GET" হবে।
উদাহরণ ২
নিম্নলিখিত উদাহরণটি একটি একক সেগমেন্টে একাধিক ধাপ দেখায়:
<!-- api-platform/reference/examples/flow-segments/step-2.xml --> <ProxyEndpoint name="default"> <PostFlow name="PostFlow"> <Response> <Step> <Name>Assign-Message-1</Name> </Step> <Step> <Name>Assign-Message-2</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
শর্তবিহীন ধাপগুলো সর্বদা কার্যকর হয়।
বৈশিষ্ট্য
<Step> এলিমেন্টটির কোনো অ্যাট্রিবিউট নেই।
শিশু উপাদান
নিম্নলিখিত সারণিতে <Step> এর চাইল্ড এলিমেন্টগুলো বর্ণনা করা হয়েছে:
| শিশু উপাদান | প্রকার | বর্ণনা |
|---|---|---|
<Condition> | স্ট্রিং | ধাপটির জন্য একটি শর্তসাপেক্ষ বিবৃতি নির্ধারণ করে, যা রানটাইমে প্রক্রিয়া করা হয়। যদি বিবৃতিটির মান সত্য হয়, তাহলে Edge ধাপটি সম্পাদন করে। যদি বিবৃতিটির মান মিথ্যা হয়, তাহলে Edge ধাপটি এড়িয়ে যায়। |
<Name> | স্ট্রিং | বর্তমান ফ্লোতে কার্যকর করার জন্য পলিসির আইডি নির্দিষ্ট করে। |