أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
يقدّم هذا القسم معلومات مرجعية حول عناصر 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>يمكنك استخدام هذه العناصر لتحديد تنفيذ 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[نقطة]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 العنصر الأول فقط الذي لا يتضمّن شرطًا أو يكون الشرط فيه صحيحًا.
يمكنك تحديد مسار تلقائي يتم تنفيذه دائمًا (في حال عدم تنفيذ أي من المسارات الشرطية الأخرى). استنادًا إلى طريقة ضبط خادم وكيل واجهة برمجة التطبيقات، يمكن أن تكون هذه الأداة مفيدة في الحماية من الهجمات الضارة.
البنية
يستخدم العنصر <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 سوى مسار واحد في أحد الأقسام، وهو ينفّذ المسار الأول الذي لا يتضمّن شرطًا أو الذي يتم تقييم شرطه على أنّه صحيح.
السمات
يوضّح الجدول التالي سمات العنصر <Flow>:
| السمة | النوع | الوصف |
|---|---|---|
name |
سلسلة | (مطلوب) معرّف فريد للمسار. على سبيل المثال، "My-Conditional-Flow-1". لا يمكن أن يحتوي الاسم على مسافات أو رموز خاصة أخرى. |
العناصر الفرعية
يوضّح الجدول التالي العناصر الثانوية للعنصر <Flow>:
| العنصر الفرعي | النوع | الوصف |
|---|---|---|
<Condition> |
سلسلة | تحدّد هذه السمة عبارة شرطية تتم معالجتها في وقت التشغيل. إذا تم تقييم العبارة على أنّها صحيحة، سيتم تنفيذ التدفق (وجميع خطواته). إذا تم تقييم العبارة إلى false، سيتم تجاهل المسار (وجميع خطواته). |
<Description> |
سلسلة | تقدّم هذه السمة وصفًا موجزًا للمسار. هذا الوصف غير مرئي خارجيًا. |
<Request> |
عنصر معقّد | تحدّد هذه السمة الخطوات والشروط الخاصة بقطعة الطلب. |
<Response> |
عنصر معقّد | تحدّد هذه السمة الخطوات والشروط الخاصة بجزء الردّ. |
<Flows>
يحتوي على صفر أو أكثر من عناصر <Flow>.
| النوع | عنصر معقّد |
| العناصر الرئيسية | <ProxyEndpoint><TargetEndpoint> |
| العناصر الفرعية | <Flow> |
في حال توفّر عناصر <Flow> متعدّدة ضمن <Flows>، سيتم تنفيذ عنصر <Flow> واحد فقط. سيكون هذا هو المسار الأول الذي لا يتضمّن <Condition> أو الذي يتم فيه حل الشرط إلى "صحيح".
يمكنك تحديد مسار تلقائي يتم تنفيذه دائمًا (في حال عدم تنفيذ أي من المسارات الأخرى). استنادًا إلى طريقة ضبط خادم وكيل واجهة برمجة التطبيقات، يمكن أن تكون هذه الأداة مفيدة في الحماية من الهجمات الضارة.
البنية
يستخدم العنصر <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>
يمكن أن يكون هناك <Condition> واحد و<Name> واحد فقط لكل <Step>، ولكن يمكن أن تتضمّن <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 الخطوة. إذا تم تقييم العبارة على أنّها false، سيتخطّى Edge الخطوة. |
<Name> |
سلسلة | تحدّد هذه السمة رقم تعريف السياسة المطلوب تنفيذها في المسار الحالي. |