ফ্লো কনফিগারেশন রেফারেন্স

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

এই বিভাগটি আপনার API প্রক্সি ফ্লোকে সংজ্ঞায়িত করতে আপনি যে XML উপাদানগুলি ব্যবহার করেন সে সম্পর্কে রেফারেন্স তথ্য প্রদান করে৷

অনুক্রম এবং সিনট্যাক্স

নিম্নলিখিত উদাহরণগুলি ফ্লো কনফিগারেশন উপাদানগুলির উপাদান অনুক্রম এবং সিনট্যাক্স দেখায়:

উপাদান অনুক্রম

নিম্নলিখিত উদাহরণটি <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>

আপনি আপনার প্রিফ্লো, কন্ডিশনাল ফ্লো, পোস্টফ্লো এবং পোস্টক্লায়েন্টফ্লো এক্সিকিউশন সংজ্ঞায়িত করতে এই উপাদানগুলি ব্যবহার করেন।

<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> এর মধ্যে একটি শর্ত সত্যে মূল্যায়ন করে, এজ সেই পদক্ষেপটি কার্যকর করে। শর্তটি মিথ্যা হিসাবে মূল্যায়ন করলে, এজ পদক্ষেপটি এড়িয়ে যায়।

যদি একটি <Flow> -এর মধ্যে একটি শর্ত সত্যে মূল্যায়ন করে, এজ প্রবাহের সমস্ত ধাপগুলি প্রক্রিয়া করে। যদি শর্তটি মিথ্যা হিসাবে মূল্যায়ন করা হয়, এজ পুরো প্রবাহটি এড়িয়ে যায়।

সিনট্যাক্স

<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"। মানটিতে ওয়াইল্ডকার্ড অন্তর্ভুক্ত থাকতে পারে, যেমন নমুনা মিলের জন্য তারকাচিহ্ন এবং অন্যান্য অক্ষর, যেমনটি শর্তসাপেক্ষের সাথে প্যাটার্ন মেলাতে বর্ণিত হয়েছে।

উদাহরণ 1

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" হয়, তাহলে এই উদাহরণটি "লগ-অনুরোধ-ওকে" নীতি কার্যকর করে।

উদাহরণ 2

নিম্নলিখিত উদাহরণ প্রতিক্রিয়া কোডের জন্য পরীক্ষা করে:

<!-- 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>

পদক্ষেপের একটি কাস্টম সেট সংজ্ঞায়িত করে যা এজ চালায়।

টাইপ জটিল বস্তু
অভিভাবক উপাদান(গুলি) <Flows>
শিশু উপাদান(গুলি) <Condition>
<Description>
<Request>
<Response>

আপনি ঐচ্ছিকভাবে <Flow> -এ একটি <Condition> নির্দিষ্ট করতে পারেন। সেই ক্ষেত্রে, এজ শুধুমাত্র প্রবাহের ধাপগুলি চালায় যদি শর্তটি সত্যে মূল্যায়ন করা হয়। অন্যথায়, এজ পুরো প্রবাহটি এড়িয়ে যায়।

একটি <Flows> উপাদান একাধিক <Flow> উপাদান ধারণ করতে পারে, যার প্রত্যেকটির নিজস্ব অবস্থা এবং ধাপ রয়েছে। যখন একাধিক <Flow> উপাদান থাকে, তখন এজ শুধুমাত্র প্রথমটি চালায় যেখানে কোন শর্ত নেই বা শর্তটি সত্যে মূল্যায়ন করে।

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

সিনট্যাক্স

<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> এর সমস্ত চাইল্ড উপাদান ঐচ্ছিক।

উদাহরণ 1

নিম্নলিখিত উদাহরণটি একটি সাধারণ <Flow> দেখায় যা সর্বদা "লগ-মেসেজ-ওকে" নীতি কার্যকর করে:

<!-- 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>

উদাহরণ 2

নিম্নলিখিত উদাহরণটি একাধিক ধাপ সহ একটি <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>

উদাহরণ 3

নিম্নলিখিত উদাহরণ একটি শর্তাধীন প্রবাহে একাধিক প্রবাহ দেখায়:

<!-- 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>

এজ একটি সেগমেন্টে শুধুমাত্র একটি প্রবাহ চালায়; এটি প্রথম প্রবাহ চালায় যার কোনো শর্ত নেই, বা যার শর্তটি সত্য হয়ে যায়।

গুণাবলী

নিচের সারণী <Flow> উপাদানের বৈশিষ্ট্য বর্ণনা করে:

বৈশিষ্ট্য টাইপ বর্ণনা
name স্ট্রিং (প্রয়োজনীয়) প্রবাহের জন্য একটি অনন্য আইডি। উদাহরণস্বরূপ, "মাই-কন্ডিশনাল-ফ্লো-1"। নামটিতে স্পেস বা অন্যান্য বিশেষ অক্ষর থাকতে পারে না।

শিশু উপাদান

নিম্নলিখিত সারণী <Flow> এর চাইল্ড উপাদানগুলি বর্ণনা করে:

শিশু উপাদান টাইপ বর্ণনা
<Condition> স্ট্রিং একটি শর্তসাপেক্ষ বিবৃতি সংজ্ঞায়িত করে যা রানটাইমে প্রক্রিয়া করা হয়। যদি বিবৃতিটি সত্যে মূল্যায়ন করে, তাহলে প্রবাহ (এবং এর সমস্ত পদক্ষেপ) কার্যকর করা হয়। যদি বিবৃতিটি মিথ্যা হিসাবে মূল্যায়ন করে, তাহলে প্রবাহ (এবং এর সমস্ত পদক্ষেপ) উপেক্ষা করা হয়।
<Description> স্ট্রিং প্রবাহের একটি সংক্ষিপ্ত বিবরণ প্রদান করে। এই বর্ণনা বাহ্যিকভাবে দৃশ্যমান নয়।
<Request> জটিল বস্তু অনুরোধ বিভাগের জন্য পদক্ষেপ এবং শর্তাবলী নির্দিষ্ট করে।
<Response> জটিল বস্তু প্রতিক্রিয়া বিভাগের জন্য পদক্ষেপ এবং শর্তাবলী নির্দিষ্ট করে।

<Flows>

শূন্য বা তার বেশি <Flow> উপাদান রয়েছে।

টাইপ জটিল বস্তু
অভিভাবক উপাদান(গুলি) <ProxyEndpoint>
<TargetEndpoint>
শিশু উপাদান(গুলি) <Flow>

<Flows> -এর মধ্যে একাধিক <Flow> উপাদান থাকলে, শুধুমাত্র একটি <Flow> চালানো হবে। এটিই হবে প্রথম প্রবাহ যার হয় কোনো <Condition> নেই, অথবা যার শর্ত সত্য হয়ে যায়।

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

সিনট্যাক্স

<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> -এর সমস্ত চাইল্ড উপাদান ঐচ্ছিক।

উদাহরণ 1

নিম্নলিখিত উদাহরণটি একটি একক <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>

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

উদাহরণ 2

নিম্নলিখিত উদাহরণটি < <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>

এজ একটি সেগমেন্টে শুধুমাত্র প্রথম প্রবাহ চালায় যার শর্তটি সত্যে মূল্যায়ন করে। এর পরে, এজ সেগমেন্টের অবশিষ্ট প্রবাহগুলি এড়িয়ে যায়।

উদাহরণ 3

নিম্নলিখিত উদাহরণটি একটি "ডিফল্ট" <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>

এজ একটি সেগমেন্টে শুধুমাত্র প্রথম প্রবাহ চালায় যার শর্তটি সত্যে মূল্যায়ন করে। যদি কোনো শর্তসাপেক্ষ প্রবাহ কার্যকর না হয়, তাহলে এই উদাহরণের তৃতীয় প্রবাহটি (কোন শর্ত ছাড়াই) কার্যকর হয়।

একটি ডিফল্ট প্রবাহ দূষিত আক্রমণ থেকে রক্ষা করার জন্য একটি দরকারী টুল হতে পারে৷

গুণাবলী

<Flows> উপাদানটির কোনো বৈশিষ্ট্য নেই।

শিশু উপাদান

<Flows> উপাদানটিতে নিম্নলিখিত শিশু উপাদান রয়েছে:

শিশু উপাদান টাইপ বর্ণনা
<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>
শিশু উপাদান(গুলি) <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> -এর সমস্ত চাইল্ড উপাদান ঐচ্ছিক।

উদাহরণ

নিম্নলিখিত উদাহরণটি একটি অনুরোধ এবং একটি প্রতিক্রিয়া প্রবাহ সংজ্ঞায়িত সহ একটি 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-এ যে ক্রমানুসারে সংজ্ঞায়িত করা হয়েছে সেই ক্রমেই কার্যকর করা হয়।

একটি শর্ত ছাড়া পদক্ষেপ সবসময় সঞ্চালন. শর্তের সাথে পদক্ষেপগুলি কেবল তখনই কার্যকর হয় যখন শর্তটি সত্যে মূল্যায়ন করা হয়। যদি শর্তটি মিথ্যা হিসাবে মূল্যায়ন করে, তাহলে এজ পদক্ষেপটি এড়িয়ে যায়।

সিনট্যাক্স

<Step> উপাদানটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

<Step>
  <Condition>property operator "value"</Condition>
  <Name>policy_name</Name>
</Step>

প্রতি <Step> শুধুমাত্র একটি <Condition> এবং একটি <Name> থাকতে পারে, কিন্তু <Flow> -এ একাধিক ধাপ থাকতে পারে।

<Step> -এর সমস্ত চাইল্ড উপাদান ঐচ্ছিক।

উদাহরণ 1

নিম্নলিখিত উদাহরণটি শর্ত সহ একটি ধাপ এবং শর্ত ছাড়া একটি ধাপ দেখায়:

<!-- 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" হয়৷

উদাহরণ 2

নিম্নলিখিত উদাহরণটি একটি একক বিভাগে একাধিক পদক্ষেপ দেখায়:

<!-- 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> স্ট্রিং রানটাইমে প্রক্রিয়া করা ধাপের জন্য একটি শর্তসাপেক্ষ বিবৃতি সংজ্ঞায়িত করে। যদি বিবৃতিটি সত্য হিসাবে মূল্যায়ন করে, তাহলে এজ পদক্ষেপটি কার্যকর করে। যদি বিবৃতিটি মিথ্যা মূল্যায়ন করে, তাহলে এজ ধাপটি এড়িয়ে যায়।
<Name> স্ট্রিং বর্তমান প্রবাহে কার্যকর করার জন্য নীতির ID নির্দিষ্ট করে।