مرجع پیکربندی جریان

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

این بخش اطلاعات مرجعی را در مورد عناصر XML که برای تعریف جریان های پروکسی API خود استفاده می کنید، ارائه می دهد.

سلسله مراتب و نحو

مثال های زیر سلسله مراتب و نحو عناصر پیکربندی جریان را نشان می دهد:

سلسله مراتب عناصر

مثال زیر سلسله مراتب عناصر پیکربندی جریان را در عناصر <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". مقدار می‌تواند شامل حروف عام مانند ستاره و سایر نویسه‌ها برای تطبیق الگو باشد، همانطور که در تطبیق الگو با شرط‌ها توضیح داده شده است.

مثال 1

مثال زیر بررسی می کند که آیا ویژگی verb متغیر جریان request "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" را اجرا می کند.

مثال 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>

مجموعه ای سفارشی از مراحل را که Edge اجرا می کند تعریف می کند.

تایپ کنید شیء پیچیده
عنصر(های) والد <Flows>
عنصر(های) کودک <Condition>
<Description>
<Request>
<Response>

شما می توانید به صورت اختیاری یک <Condition> را در <Flow> مشخص کنید. در آن صورت، Edge تنها در صورتی مراحل موجود در جریان را اجرا می کند که شرط به درستی ارزیابی شود. در غیر این صورت، Edge از کل جریان عبور می کند.

یک عنصر <Flows> می تواند شامل چندین عنصر <Flow> باشد که هر کدام شرایط و مراحل خاص خود را دارند. هنگامی که چندین عنصر <Flow> وجود دارد، Edge فقط اولین موردی را اجرا می کند که در آن شرط وجود ندارد یا شرط به درستی ارزیابی می شود.

می‌توانید یک جریان پیش‌فرض تعریف کنید که همیشه اجرا شود (اگر هیچ یک از جریان‌های شرطی دیگر اجرا نشود). بسته به اینکه پروکسی 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> ساده را نشان می دهد که همیشه خط مشی "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>

مثال 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>

Edge تنها یک جریان را در یک قطعه اجرا می کند. اولین جریانی را اجرا می کند که شرط ندارد یا شرط آن به true تبدیل می شود.

صفات

جدول زیر ویژگی های عنصر <Flow> را شرح می دهد:

صفت تایپ کنید توضیحات
name رشته (الزامی) شناسه منحصر به فرد برای جریان. به عنوان مثال، "My-Conditional-Flow-1". نام نمی تواند شامل فاصله یا سایر کاراکترهای خاص باشد.

عناصر کودک

جدول زیر عناصر فرزند <Flow> را شرح می دهد:

عنصر کودک تایپ کنید توضیحات
<Condition> رشته یک دستور شرطی را تعریف می کند که در زمان اجرا پردازش می شود. اگر عبارت درست ارزیابی شود، جریان (و تمام مراحل آن) اجرا می شود. اگر عبارت نادرست ارزیابی شود، جریان (و تمام مراحل آن) نادیده گرفته می شود.
<Description> رشته شرح مختصری از جریان ارائه می دهد. این توضیحات به صورت خارجی قابل مشاهده نیست.
<Request> شیء پیچیده مراحل و شرایط بخش درخواست را مشخص می کند.
<Response> شیء پیچیده مراحل و شرایط بخش پاسخ را مشخص می کند.

<Flows>

حاوی صفر یا بیشتر عناصر <Flow> است.

تایپ کنید شیء پیچیده
عنصر(های) والد <ProxyEndpoint>
<TargetEndpoint>
عنصر(های) کودک <Flow>

اگر چندین عنصر <Flow> در <Flows> وجود داشته باشد، تنها یک <Flow> اجرا می‌شود. این اولین جریانی خواهد بود که یا <Condition> ندارد، یا شرط آن به true تبدیل می شود.

شما می توانید یک جریان پیش فرض را تعریف کنید که همیشه اجرا شود (اگر هیچ یک از جریان های دیگر اجرا نشود). بسته به اینکه پروکسی 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

مثال زیر یک عنصر <Flows> ساده را با یک <Flow> نشان می‌دهد:

<!-- 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 این جریان را اجرا نمی کند.

مثال 2

مثال زیر چندین عنصر <Flow> را در <Flows> نشان می‌دهد که هر کدام <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 از جریان‌های باقی‌مانده در بخش می‌گذرد.

مثال 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>

Edge فقط اولین جریان را در قطعه ای اجرا می کند که شرط آن درست ارزیابی می شود. اگر هیچ جریان شرطی اجرا نشود، سومین جریان در این مثال (بدون شرط) اجرا می شود.

یک جریان پیش فرض می تواند ابزار مفیدی برای محافظت در برابر حملات مخرب باشد.

صفات

عنصر <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>

مراحلی را که باید در 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>

مثال

مثال زیر یک 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> شیء پیچیده خط مشی هایی را برای اجرا در طول PostFlow درخواست تعریف می کند.
<Response> شیء پیچیده خط مشی هایی را برای اجرا در طول PostFlow پاسخ تعریف می کند.

<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> شیء پیچیده خط مشی هایی را برای اجرا در طول PostFlow پاسخ تعریف می کند.

<PreFlow>

خط مشی هایی را برای اجرا در 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> شیء پیچیده خط مشی هایی را برای اجرا در طول PreFlow درخواست تعریف می کند.
<Response> شیء پیچیده خط مشی هایی را برای اجرا در طول PreFlow پاسخ تعریف می کند.

<Request>

خط مشی هایی را برای اجرا در طول بخش درخواست جریان تعریف می کند.

تایپ کنید شیء پیچیده
عنصر(های) والد <Flow>
<PreFlow>
<PostFlow>
عنصر(های) کودک <Condition>
<Step>

نحو

عنصر <Request> از نحو زیر استفاده می کند:

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

همه عناصر فرزند <Request> اختیاری هستند.

مثال

مثال زیر جریان های تعریف شده برای درخواست را در PreFlow و PostFlow نشان می دهد:

<!-- 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> اختیاری هستند.

مثال

مثال زیر جریان های تعریف شده برای پاسخ را در PreFlow و PostFlow نشان می دهد:

<!-- 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> اختیاری هستند.

مثال 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> رشته یک دستور شرطی برای مرحله ای که در زمان اجرا پردازش می شود تعریف می کند. اگر عبارت درست ارزیابی شود، Edge مرحله را اجرا می کند. اگر عبارت نادرست ارزیابی شود، Edge مرحله را رد می کند.
<Name> رشته شناسه خط مشی را برای اجرا در جریان جاری مشخص می کند.