مرجع ضبط الخادم الوكيل لواجهة برمجة التطبيقات

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

بصفتك مطوّرًا يعمل مع Apigee Edge، تتضمّن أنشطة التطوير الأساسية التي تقوم بها إعداد خوادم وكيلة لواجهات برمجة التطبيقات تعمل كخوادم وكيلة لواجهات برمجة التطبيقات أو الخدمات الخلفية. هذا المستند هو مرجع لجميع عناصر الإعداد المتاحة لك عند إنشاء خوادم وكيلة لواجهة برمجة التطبيقات.

إذا كنت تتعلّم كيفية إنشاء خوادم وكيلة لواجهات برمجة التطبيقات، ننصحك بالبدء بالموضوع إنشاء خادم وكيل بسيط لواجهة برمجة تطبيقات.

في ما يلي الطرق الأكثر شيوعًا لتعديل إعدادات الخادم الوكيل:

تطوير إعدادات الخادم الوكيل على الجهاز

يمكنك تنزيل إعدادات الخادم الوكيل لتعديلها على جهاز محلي. عند الانتهاء، يمكنك تحميل النتائج إلى Edge. يتيح لك هذا الأسلوب دمج إعدادات الخادم الوكيل في نظام التحكّم بالمصادر وإصدارات البرامج وعمليات سير العمل المشتركة الأخرى. بالإضافة إلى ذلك، من خلال العمل على إعدادات الخادم الوكيل محليًا، يمكنك استخدام أدوات تعديل XML والتحقّق من صحتها.

يوضّح هذا القسم كيفية استخدام واجهة المستخدم لتنزيل إعدادات خادم وكيل حالية وتعديلها، ثم إعادة تحميلها إلى Edge لنشرها. يمكنك أيضًا استخدام apigeetool لتنزيل إعدادات وكيل جديدة ونشرها (باستخدام الأمرَين fetchproxy وdeployproxy على التوالي).

لتعديل إعدادات الخادم الوكيل محليًا باستخدام واجهة المستخدم، اتّبِع الخطوات التالية:

  1. نزِّل إعدادات الخادم الوكيل الحالية في واجهة مستخدم Edge. (في عرض "خوادم وكيل واجهة برمجة التطبيقات" (API Proxies)، انقر على المشروع (Project) > تنزيل المراجعة (Download Revision)).
  2. على جهازك المحلي، أنشئ دليلاً جديدًا وفك ضغط ملف ZIP الذي تم تنزيله فيه.

    لتوسيع ملف ZIP، يمكنك استخدام أداة مساعدة مثل unzip، كما يوضّح المثال التالي:

    mkdir myappdir
    unzip ./my-app_app_rev3_2019_04_20.zip -d myappdir

    يجب أن يكون المحتوى الموسّع لملف ZIP مشابهًا للتنسيق الموضّح في بنية خادم وكيل لواجهة برمجة التطبيقات.

  3. عدِّل ملفات المصدر حسب الضرورة. للحصول على وصف للملفات المصدر في إعدادات الخادم الوكيل، راجِع ملفات الإعداد وبنية الدليل لخادم وكيل لواجهة برمجة التطبيقات.

    على سبيل المثال، لتفعيل ميزة مراقبة الصحة في خادم وكيل واجهة برمجة التطبيقات، عدِّل ملف إعداد TargetEndpoint في الدليل /apiproxy/targets/. الملف التلقائي في هذا الدليل هو default.xml، ولكن قد تكون هناك ملفات بأسماء مختلفة إذا كنت تستخدم أهدافًا شرطية.

    في هذه الحالة، إذا لم يكن ملف إعداد TargetEndpoint والدليل الخاص به متوفّرَين، عليك إنشاؤهما.

  4. بعد الانتهاء من تعديل ملفات إعدادات الخادم الوكيل، احرِص على حفظ التغييرات.
  5. انتقِل إلى الدليل الجديد الذي أنشأته عند فك ضغط ملفات ZIP (جذر ملفات الإعدادات التي تم فك ضغطها).

    على سبيل المثال، إذا وسّعت الملفات إلى الدليل /myappdir، انتقِل إلى هذا الدليل، كما يوضّح المثال التالي:

    cd myappdir

    عليك الانتقال إلى هذا الدليل قبل إعادة أرشفة ملفات إعدادات الخادم الوكيل لأنّك لا تريد تضمين الدليل /myappdir في ملف ZIP. يجب أن يكون دليل المستوى الأعلى في ملف ZIP هو /apiproxy.

  6. أعِد أرشفة ملفات إعدادات الخادم الوكيل، بما في ذلك الملفات الجديدة أو المعدَّلة. يمكنك استخدام أداة مساعدة مثل zip، كما يوضّح المثال التالي:
    zip my-new-proxy.zip -r .

    يجب أن يكون دليل المستوى الأعلى في ملف ZIP هو /apiproxy.

    لا توجد متطلبات خاصة لاسم ملف ZIP. على سبيل المثال، ليس عليك زيادة رقم المراجعة أو تحديد التاريخ في اسم الملف، ولكن قد يكون ذلك مفيدًا لتصحيح الأخطاء أو التحكّم في المصدر.

    تزيد Edge تلقائيًا رقم مراجعة إعدادات الخادم الوكيل الجديدة عند تحميلها.

  7. حمِّل إعدادات الخادم الوكيل الجديدة باستخدام واجهة مستخدم Edge. (في عرض خوادم وكيل واجهة برمجة التطبيقات، اختَر المشروع > تحميل مراجعة جديدة).

    إذا ظهر لك خطأ مثل Bundle is invalid. Empty bundle.، تأكَّد من أنّ دليل المستوى الأعلى لملف ZIP هو /apiproxy. إذا لم يكن كذلك، أعِد أرشفة ملفات إعدادات الخادم الوكيل من جذر الدليل الموسّع.

    بعد تحميل إعدادات الخادم الوكيل الجديدة، يزيد Edge رقم المراجعة ويعرضه في عرض ملخّص المراجعة.

    لا تنشر Edge المراجعة الجديدة نيابةً عنك بعد تحميلها باستخدام واجهة المستخدم.

  8. انشر المراجعة الجديدة.

لمزيد من المعلومات، يُرجى الاطّلاع على البرنامج التعليمي: كيفية تنزيل وكيل باستخدام واجهة المستخدم وواجهة برمجة التطبيقات الإدارية في منتدى Apigee.

بنية خادم وكيل لواجهة برمجة التطبيقات

يتألف خادم وكيل لواجهة برمجة التطبيقات من الإعدادات التالية:

الإعداد الأساسي إعدادات الضبط الأساسية لخادم وكيل لواجهة برمجة التطبيقات اطّلِع على الإعدادات الأساسية.
إعداد ProxyEndpoint إعدادات اتصال HTTP الوارد (من التطبيقات التي تطلب إلى Apigee Edge)، وتدفقات الطلبات والاستجابات، ومرفقات السياسات راجِع ProxyEndpoint.
إعداد TargetEndpoint إعدادات اتصال HTTP الصادر (من Apigee Edge إلى الخدمة الخلفية) وتدفقات الطلبات والاستجابات ومرفقات السياسات اطّلِع على TargetEndpoint.
عمليات خطوط أنابيب الطلبات والاستجابات في ProxyEndpoint وTargetEndpoint التي يمكن ربط السياسات بها اطّلِع على عمليات سير العمل.
السياسات ملفات الإعداد بتنسيق XML التي تتوافق مع مخططات سياسات Apigee Edge اطّلِع على السياسات.
المراجع النصوص البرمجية وملفات JAR وملفات XSLT التي تشير إليها السياسات لتنفيذ منطق مخصّص اطّلِع على المراجع.

بنية دليل خادم وكيل لواجهة برمجة التطبيقات ومحتواه

يتم تحديد المكوّنات في الجدول أعلاه من خلال ملفات الإعداد في بنية الدليل التالية:

تعرِض هذه السمة بنية الدليل التي يكون فيها apiproxy هو الجذر. يتم وضع سياسات وخوادم وكيل وموارد وأهداف ضمن دليل apiproxy مباشرةً، بالإضافة إلى ملف weatherapi.xml.

ملفات الإعداد وبنية الدليل لخادم وكيل لواجهة برمجة التطبيقات

يوضّح هذا القسم ملفات الإعداد وبنية الدليل لخادم وكيل لواجهة برمجة التطبيقات.

الإعدادات الأساسية

/apiproxy/weatherapi.xml

الإعداد الأساسي لخادم وكيل لواجهة برمجة التطبيقات، والذي يحدّد اسم خادم وكيل لواجهة برمجة التطبيقات يجب أن يكون الاسم فريدًا داخل المؤسسة.

مثال على الإعداد:

<APIProxy name="weatherapi">
</APIProxy>

عناصر الإعداد الأساسي

الاسم الوصف تلقائي مطلوب؟
APIProxy
name اسم خادم وكيل واجهة برمجة التطبيقات، ويجب أن يكون فريدًا داخل المؤسسة يُسمح لك باستخدام الأحرف التالية فقط في الاسم: A-Za-z0-9_- لا ينطبق نعم
revision رقم مراجعة إعدادات خادم وكيل لواجهة برمجة التطبيقات لست بحاجة إلى ضبط رقم المراجعة بشكل صريح، لأنّ Apigee Edge يتتبّع تلقائيًا المراجعة الحالية لخادم وكيل واجهة برمجة التطبيقات. لا ينطبق لا
ConfigurationVersion إصدار مخطط إعدادات خادم وكيل لواجهة برمجة التطبيقات الذي يتوافق معه خادم وكيل لواجهة برمجة التطبيقات هذا. القيمة الوحيدة المسموح بها حاليًا هي majorVersion 4 وminorVersion 0. قد يتم استخدام هذا الإعداد في المستقبل لتفعيل تطوير تنسيق خادم وكيل لواجهة برمجة التطبيقات. 4.0 لا
Description وصف نصي لخادم وكيل واجهة برمجة التطبيقات في حال توفّره، سيظهر الوصف في واجهة مستخدم إدارة Edge. لا ينطبق لا
DisplayName اسم سهل الاستخدام قد يختلف عن السمة name في إعدادات خادم وكيل واجهة برمجة التطبيقات. لا ينطبق لا
Policies قائمة بالسياسات في الدليل /policies لخادم وكيل واجهة برمجة التطبيقات هذا لن يظهر لك هذا العنصر عادةً إلا عند إنشاء خادم وكيل لواجهة برمجة التطبيقات باستخدام واجهة مستخدم إدارة Edge. هذا مجرد إعداد "بيان" مصمّم لتوفير إمكانية الاطّلاع على محتويات خادم وكيل لواجهة برمجة التطبيقات. لا ينطبق لا
ProxyEndpoints قائمة بـ ProxyEndpoints في الدليل /proxies لخادم API الوكيل هذا لن يظهر لك هذا العنصر عادةً إلا عند إنشاء خادم وكيل لواجهة برمجة التطبيقات باستخدام واجهة مستخدم إدارة Edge. هذا مجرد إعداد "بيان" مصمّم لتوفير إمكانية الاطّلاع على محتويات خادم وكيل لواجهة برمجة التطبيقات. لا ينطبق لا
Resources قائمة بالموارد (JavaScript وPython وJava وXSLT) في الدليل /resources الخاص بخادم وكيل واجهة برمجة التطبيقات هذا. لن يظهر هذا العنصر عادةً إلا عند إنشاء خادم وكيل لواجهة برمجة التطبيقات باستخدام واجهة مستخدم إدارة Edge. هذا مجرد إعداد "بيان"، وهو مصمّم لتوفير إمكانية الاطّلاع على محتويات خادم وكيل لواجهة برمجة التطبيقات. لا ينطبق لا
Spec تحدّد هذه السمة مواصفات OpenAPI المرتبطة بخادم API الوكيل. يتم ضبط القيمة على عنوان URL أو مسار في متجر المواصفات.

ملاحظة: يتوفّر متجر المواصفات في تجربة New Edge فقط. لمزيد من المعلومات حول متجر المواصفات، يُرجى الاطّلاع على مقالة إدارة المواصفات ومشاركتها.
لا ينطبق لا
TargetServers قائمة بـ TargetServers التي تتم الإشارة إليها في أي TargetEndpoints لخادم وكيل API هذا. لن يظهر لك هذا العنصر عادةً إلا عند إنشاء خادم وكيل لواجهة برمجة التطبيقات باستخدام واجهة مستخدم إدارة Edge. هذا مجرد إعداد "بيان" مصمّم لتوفير إمكانية الاطّلاع على محتويات خادم وكيل لواجهة برمجة التطبيقات. لا ينطبق لا
TargetEndpoints قائمة بـ TargetEndpoints في الدليل /targets لخادم وكيل واجهة برمجة التطبيقات هذا لن يظهر لك هذا العنصر عادةً إلا عند إنشاء خادم وكيل لواجهة برمجة التطبيقات باستخدام واجهة مستخدم إدارة Edge. هذا مجرد إعداد "بيان" مصمّم لتوفير إمكانية الاطّلاع على محتويات خادم وكيل لواجهة برمجة التطبيقات. لا ينطبق لا

ProxyEndpoint

تعرض الصورة التالية مسار الطلب/الردّ:

تعرض هذه السمة عميلاً يستدعي خدمة HTTP. يمر الطلب بنقطة نهاية الخادم الوكيل ثم بنقطة نهاية الهدف قبل أن تتم معالجته بواسطة خدمة HTTP. تمر الاستجابة عبر نقطة النهاية المستهدَفة ثم نقطة نهاية الخادم الوكيل قبل إرجاعها إلى العميل.

/apiproxy/proxies/default.xml

يحدّد إعداد ProxyEndpoint الواجهة الواردة (المخصّصة للعملاء) لخادم وكيل لواجهة برمجة التطبيقات. عند ضبط ProxyEndpoint، فإنّك تعدّ إعدادات شبكة تحدّد الطريقة التي يجب أن تستدعي بها تطبيقات العميل (المعروفة باسم "التطبيقات") واجهة برمجة التطبيقات التي يتم توجيهها عبر الخادم الوكيل.

سيتم تخزين نموذج إعداد ProxyEndpoint التالي ضمن /apiproxy/proxies:

<ProxyEndpoint name="default">
  <PreFlow/>
  <Flows/>
  <PostFlow/>
  <HTTPProxyConnection>
    <BasePath>/weather</BasePath>
    <VirtualHost>default</VirtualHost>
  </HTTPProxyConnection>
  <FaultRules/>
  <DefaultFaultRule/>
  <RouteRule name="default">
    <TargetEndpoint>default</TargetEndpoint>
  </RouteRule>
</ProxyEndpoint>

في ما يلي عناصر الإعداد المطلوبة في ProxyEndpoint الأساسي:

عناصر إعداد ProxyEndpoint

الاسم الوصف تلقائي مطلوب؟
ProxyEndpoint
name اسم ProxyEndpoint. يجب أن يكون فريدًا ضمن إعدادات خادم وكيل لواجهة برمجة التطبيقات، وذلك في الحالات النادرة التي يتم فيها تحديد نقاط نهاية متعددة للخادم الوكيل. يُسمح لك باستخدام الأحرف التالية فقط في الاسم: A-Za-z0-9._\-$ %. لا ينطبق نعم
PreFlow تحدّد هذه السمة السياسات في مسار PreFlow لطلب أو ردّ. لا ينطبق نعم
Flows
تحدّد هذه السمة السياسات في المسارات الشرطية لطلب أو استجابة.
لا ينطبق نعم
PostFlow
تحدّد هذه السمة السياسات في مسار PostFlow لطلب أو ردّ.
لا ينطبق نعم
HTTPProxyConnection تحدّد هذه السمة عنوان الشبكة ومسار معرّف الموارد المنتظم (URI) المرتبطين بخادم وكيل لواجهة برمجة التطبيقات.
BasePath

سلسلة مطلوبة تحدّد بشكل فريد مسار معرّف الموارد المنتظم (URI) الذي تستخدمه Apigee Edge لتوجيه الرسائل الواردة إلى خادم وكيل واجهة برمجة التطبيقات المناسب.

‫BasePath هو جزء من معرّف الموارد المنتظم (URI) (مثل /weather) يتم إلحاقه بالجزء الأساسي من عنوان URL لخادم وكيل لواجهة برمجة التطبيقات (مثل http://apifactory-test.apigee.net). يجب أن يكون BasePath فريدًا في البيئة. يتم التحقّق من التفرد عند إنشاء أو استيراد خادم وكيل لواجهة برمجة التطبيقات.

استخدام حرف بدل في المسارات الأساسية

يمكنك استخدام حرف بدل واحد أو أكثر من علامة النجمة (*) في مسارات الأساس لوكيل API. على سبيل المثال، يتيح مسار أساسي بقيمة /team/*/members للعملاء إمكانية طلب https://[host]/team/blue/members وhttps://[host]/team/green/members بدون الحاجة إلى إنشاء خوادم وكيلة جديدة لواجهة برمجة التطبيقات لدعم فِرق جديدة. يُرجى العِلم أنّ /**/ غير متاح.

ملاحظة مهمة: لا تتيح Apigee استخدام حرف البدل "*" كعنصر أول في المسار الأساسي. على سبيل المثال، لا يمكن استخدام ما يلي: /*/search. قد يؤدي بدء المسار الأساسي بعلامة "*" إلى حدوث أخطاء غير متوقّعة بسبب الطريقة التي يحدّد بها Edge المسارات الصالحة.

/ نعم
VirtualHost

يربط وكيل واجهة برمجة التطبيقات بعناوين URL أساسية معيّنة لبيئة ما. ‫VirtualHost هو إعداد مسمّى يحدّد عنوان URL واحدًا أو أكثر لبيئة معيّنة.

تحدّد VirtualHosts المسماة التي تم تحديدها لـ ProxyEndpoint النطاقات والمنافذ التي يتم عرض خادم وكيل لواجهة برمجة التطبيقات عليها، وبالتالي عنوان URL الذي تستخدمه التطبيقات لاستدعاء خادم وكيل لواجهة برمجة التطبيقات.

يتم تلقائيًا تحديد مضيفَين افتراضيَين باسمَين لبيئة ما: default وsecure. يمكن للمؤسسة أيضًا تحديد نطاقات مخصّصة. لضمان توفّر خادم وكيل لواجهة برمجة التطبيقات عبر HTTPS فقط، يمكنك مثلاً ضبط VirtualHost في HTTPProxyConnection على secure.

المظهر التلقائي لا
Properties يمكن تحديد مجموعة من إعدادات تهيئة HTTP الاختيارية كخصائص لعنصر <ProxyEndpoint>. لا ينطبق لا
FaultRules
تحدّد هذه السمة طريقة تفاعل ProxyEndpoint مع الخطأ. تحدّد قاعدة الخطأ عنصرَين:
  • شرط يحدّد الخطأ الذي سيتم التعامل معه استنادًا إلى الفئة أو الفئة الفرعية أو اسم الخطأ المحدّد مسبقًا
  • سياسة واحدة أو أكثر تحدّد سلوك قاعدة الخطأ الخاصة بالشرط المقابل

يُرجى الاطّلاع على التعامل مع الأخطاء.

لا ينطبق لا
DefaultFaultRule

تعالج هذه القاعدة أي أخطاء (في النظام أو النقل أو المراسلة أو السياسة) لم تتم معالجتها بشكل صريح من خلال قاعدة أخطاء أخرى.

يُرجى الاطّلاع على التعامل مع الأخطاء.

لا ينطبق لا
RouteRule تحدّد هذه السمة وجهة رسائل الطلبات الواردة بعد معالجتها من خلال مسار طلب ProxyEndpoint. عادةً، يشير RouteRule إلى إعداد TargetEndpoint باسم، ولكن يمكنه أيضًا الإشارة مباشرةً إلى عنوان URL.
Name سمة مطلوبة توفّر اسمًا لـ RouteRule. يجب أن يقتصر عدد الأحرف المسموح بها في الاسم على ما يلي: A-Za-z0-9._\-$ %. على سبيل المثال، Cat2 %_ هو اسم قانوني. لا ينطبق نعم
Condition عبارة شرطية اختيارية تُستخدَم للتوجيه الديناميكي في وقت التشغيل. تكون قواعد التوجيه الشرطية مفيدة، على سبيل المثال، لتفعيل التوجيه المستند إلى المحتوى من أجل إتاحة إصدارات الخلفية. لا ينطبق لا
TargetEndpoint

سلسلة اختيارية تحدّد إعدادًا مسمّى TargetEndpoint. ‫TargetEndpoint المُسمّى هو أي TargetEndpoint تم تحديده في خادم وكيل API نفسه ضمن الدليل/targets.

من خلال تسمية TargetEndpoint، يمكنك تحديد المكان الذي يجب إعادة توجيه رسائل الطلبات إليه بعد معالجتها من خلال مسار طلب ProxyEndpoint. يُرجى العِلم أنّ هذا الإعداد اختياري.

يمكن أن يستدعي ProxyEndpoint عنوان URL مباشرةً. على سبيل المثال، يمكن لمورد JavaScript أو Java، الذي يعمل بدور عميل HTTP، أن يؤدي الواجب الأساسي لـ TargetEndpoint، وهو إعادة توجيه الطلبات إلى خدمة خلفية.

لا ينطبق لا
عنوان URL سلسلة اختيارية تحدّد عنوان شبكة صادرة يتم استدعاؤه من خلال ProxyEndpoint، مع تجاهل أي إعدادات TargetEndpoint قد يتم تخزينها ضمن /targets لا ينطبق لا

كيفية ضبط RouteRules

يشير TargetEndpoint المُسمّى إلى ملف إعداد ضمن /apiproxy/targets الذي يوجّه إليه RouteRule طلبًا بعد أن يعالجه ProxyEndpoint.

على سبيل المثال، يشير RouteRule التالي إلى الإعداد /apiproxy/targets/myTarget.xml:

<RouteRule name="default">
  <TargetEndpoint>myTarget</TargetEndpoint>
</RouteRule>

استدعاء عنوان URL المباشر

يمكن أن يستدعي ProxyEndpoint أيضًا خدمة خلفية مباشرةً. يتجاوز استدعاء عنوان URL المباشر أي إعدادات TargetEndpoints مسماة ضمن /apiproxy/targets). ولهذا السبب، فإنّ TargetEndpoint هو إعداد اختياري لخادم وكيل لواجهة برمجة التطبيقات، على الرغم من أنّه لا يُنصح في الواقع بالاستدعاء المباشر من ProxyEndpoint.

على سبيل المثال، تنفّذ RouteRule التالية طلب HTTP إلى http://api.mycompany.com/v2.

<RouteRule name="default">
  <URL>http://api.mycompany.com/v2</URL>
</RouteRule>

المسارات الشرطية

يمكن ربط RouteRules معًا لتوفير التوجيه الديناميكي في وقت التشغيل. يمكن توجيه الطلبات الواردة إلى إعدادات TargetEndpoint المسماة، أو مباشرةً إلى عناوين URL، أو إلى مزيج من الاثنين، استنادًا إلى عناوين HTTP أو محتوى الرسالة أو مَعلمات طلب البحث أو المعلومات السياقية، مثل وقت اليوم أو اللغة أو غير ذلك.

تعمل قواعد RouteRules الشرطية مثل العبارات الشرطية الأخرى على Apigee Edge. اطّلِع على مرجع الشروط ومرجع المتغيرات.

على سبيل المثال، يقيّم مزيج RouteRule التالي أولاً الطلب الوارد للتحقّق من قيمة عنوان HTTP. إذا كان عنوان HTTP routeTo يتضمّن القيمة TargetEndpoint1، تتم إعادة توجيه الطلب إلى TargetEndpoint الذي يحمل الاسم TargetEndpoint1. إذا لم يكن الأمر كذلك، تتم إعادة توجيه الطلب الوارد إلى http://api.mycompany.com/v2.

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
  <URL>http://api.mycompany.com/v2</URL>
</RouteRule>

المسارات الفارغة

يمكن تحديد RouteRule فارغ لدعم السيناريوهات التي لا تحتاج فيها رسالة الطلب إلى إعادة توجيه إلى TargetEndpoint. يكون ذلك مفيدًا عندما تنفّذ ProxyEndpoint كل المعالجة اللازمة، مثلاً باستخدام JavaScript لطلب خدمة خارجية أو استرداد البيانات من عملية بحث في مخزن المفتاح/القيمة الخاص بخدمات واجهة برمجة التطبيقات.

على سبيل المثال، يحدّد ما يلي مسارًا فارغًا:

<RouteRule name="GoNowhere"/>

يمكن أن تكون مسارات القيم الخالية الشرطية مفيدة. في المثال التالي، تم ضبط مسار فارغ ليتم تنفيذه عندما يكون لعنوان HTTP request.header.X-DoNothing قيمة أخرى غير null.

<RouteRule name="DoNothingOnDemand">
  <Condition>request.header.X-DoNothing != null</Condition>
</RouteRule>

تذكَّر أنّه يمكن ربط RouteRules ببعضها، لذا فإنّ مسارًا فارغًا مشروطًا سيكون عادةً أحد مكوّنات مجموعة من RouteRules المصمّمة لتوفير التوجيه الشرطي.

من الاستخدامات العملية لمسار فارغ شرطي إتاحة التخزين المؤقت. باستخدام قيمة المتغيّر الذي تم ضبطه بواسطة سياسة ذاكرة التخزين المؤقت، يمكنك إعداد خادم وكيل لواجهة برمجة التطبيقات لتنفيذ مسار فارغ عند عرض إدخال من ذاكرة التخزين المؤقت.

<RouteRule name="DoNothingUnlessTheCacheIsStale">
  <Condition>lookupcache.LookupCache-1.cachehit is true</Condition>
</RouteRule>

TargetEndpoint

تعرض هذه السمة عميلاً يستدعي خدمة HTTP. يمر الطلب بنقطة نهاية الخادم الوكيل ثم بنقطة نهاية الهدف قبل أن تتم معالجته بواسطة خدمة HTTP. تمر الاستجابة عبر نقطة النهاية المستهدَفة ثم نقطة نهاية الخادم الوكيل قبل إرجاعها إلى العميل.

‫TargetEndpoint هو المكافئ الصادر لـ ProxyEndpoint. تعمل TargetEndpoint كعميل لخدمة أو واجهة برمجة تطبيقات خلفية، إذ ترسل الطلبات وتتلقّى الردود.

لا يلزم أن يتضمّن خادم وكيل لواجهة برمجة التطبيقات أي TargetEndpoints. يمكن ضبط ProxyEndpoints لاستدعاء عناوين URL مباشرةً. يحتوي خادم وكيل لواجهة برمجة التطبيقات بدون TargetEndpoints عادةً على ProxyEndpoint يطلب إما خدمة خلفية مباشرةً، أو تم إعداده لطلب خدمة باستخدام Java أو JavaScript.

إعدادات TargetEndpoint

/targets/default.xml

تحدّد TargetEndpoint الاتصال الصادر من Apigee Edge إلى خدمة أو مورد آخر.

في ما يلي نموذج لإعداد TargetEndpoint:

<TargetEndpoint name="default">
  <PreFlow/>
  <Flows/>
  <PostFlow/>
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <SSLInfo/>
  </HTTPTargetConnection>
  <FaultRules/>
  <DefaultFaultRule/>
  <ScriptTarget/>
  <LocalTargetConnection/>
</TargetEndpoint>

عناصر TargetEndpoint Configuration

يمكن أن يستدعي TargetEndpoint هدفًا بإحدى الطرق التالية:

  • ‫HTTPTargetConnection لطلبات HTTP(S)
  • LocalTargetConnection لعملية ربط الخادم الوكيل المحلي بالخادم الوكيل
  • ScriptTarget للمكالمات إلى نص برمجي Node.js مستضاف على Edge

يمكنك ضبط إحدى هذه الإعدادات فقط في TargetEndpoint.

الاسم الوصف تلقائي مطلوب؟
TargetEndpoint
name اسم TargetEndpoint، الذي يجب أن يكون فريدًا ضمن إعدادات خادم وكيل واجهة برمجة التطبيقات يتم استخدام اسم TargetEndpoint في RouteRule الخاص بـ ProxyEndpoint لتوجيه الطلبات للمعالجة الصادرة. يُسمح لك باستخدام الأحرف التالية فقط في الاسم: A-Za-z0-9._\-$ %. لا ينطبق نعم
PreFlow تحدّد هذه السمة السياسات في مسار PreFlow لطلب أو ردّ. لا ينطبق نعم
Flows
تحدّد هذه السمة السياسات في المسارات الشرطية لطلب أو استجابة.
لا ينطبق نعم
PostFlow
تحدّد هذه السمة السياسات في مسار PostFlow لطلب أو ردّ.
لا ينطبق نعم
HTTPTargetConnection

تحدّد هذه السمة، مع عناصرها الثانوية، مدى الوصول إلى مورد الخلفية عبر HTTP.

إذا كنت تستخدم HTTPTargetConnection، لا تضبط أنواعًا أخرى من اتصالات الهدف (ScriptTarget أو LocalTargetConnection).

URL تحدّد هذه السمة عنوان الشبكة الخاص بالخدمة الخلفية التي يعيد TargetEndpoint توجيه رسائل الطلبات إليها. لا ينطبق لا
LoadBalancer

تحدّد هذه السياسة إعدادًا واحدًا أو أكثر من إعدادات TargetServer المسماة. يمكن استخدام إعدادات TargetServer المسماة لموازنة التحميل من خلال تحديد اتصالَين أو أكثر من اتصالات إعدادات نقطة النهاية.

يمكنك أيضًا استخدام TargetServers لفصل إعدادات خادم وكيل API عن عناوين URL المحدّدة لنقاط نهاية خدمة الخلفية.

يُرجى الاطّلاع على موازنة التحميل على خوادم الخلفية.

لا ينطبق لا
Properties يمكن تحديد مجموعة من إعدادات تهيئة HTTP الاختيارية كخصائص لعنصر <TargetEndpoint>. لا ينطبق لا
SSLInfo يمكنك اختياريًا تحديد إعدادات بروتوكول أمان طبقة النقل (TLS) أو طبقة المقابس الآمنة (SSL) في TargetEndpoint للتحكّم في اتصال بروتوكول أمان طبقة النقل (TLS) أو طبقة المقابس الآمنة (SSL) بين خادم وكيل واجهة برمجة التطبيقات والخدمة المستهدَفة. راجِع إعدادات TargetEndpoint لبروتوكول أمان طبقة النقل (TLS) وطبقة المقابس الآمنة (SSL). لا ينطبق لا
LocalTargetConnection تحدّد هذه السمة، مع عناصرها الفرعية، موردًا يمكن الوصول إليه محليًا، مع تجاوز خصائص الشبكة، مثل موازنة الحمل ومعالجات الرسائل.

لتحديد المورد المستهدف، أدرِج إما العنصر الثانوي APIProxy (مع العنصر ProxyEndpoint) أو العنصر الثانوي Path.

لمزيد من المعلومات، يُرجى الاطّلاع على ربط خوادم وكيل لواجهات برمجة التطبيقات ببعضها.

إذا كنت تستخدم LocalTargetConnection، لا تضبط أنواعًا أخرى من اتصالات الهدف (HTTPTargetConnection أو ScriptTarget).

APIProxy تحدّد هذه السمة اسم خادم وكيل لواجهة برمجة التطبيقات لاستخدامه كهدف للطلبات. يجب أن يكون الخادم الوكيل المستهدف في المؤسسة والبيئة نفسيهما اللتين يقع فيهما الخادم الوكيل الذي يرسل الطلبات. هذا بديل لاستخدام عنصر "المسار". لا ينطبق لا
ProxyEndpoint يتم استخدامها مع APIProxy لتحديد اسم ProxyEndpoint للخادم الوكيل المستهدف. لا ينطبق لا
Path تحدّد هذه السمة مسار نقطة نهاية لخادم وكيل لواجهة برمجة التطبيقات لاستخدامه كهدف للطلبات. يجب أن يكون الخادم الوكيل المستهدف في المؤسسة والبيئة نفسيهما اللتين يقع فيهما الخادم الوكيل الذي يرسل الطلبات. هذا بديل لاستخدام APIProxy. لا ينطبق لا
FaultRules
تحدّد هذه السمة كيفية تفاعل TargetEndpoint مع الخطأ. تحدّد قاعدة الخطأ عنصرَين:
  • شرط يحدّد الخطأ الذي سيتم التعامل معه استنادًا إلى الفئة أو الفئة الفرعية أو اسم الخطأ المحدّد مسبقًا
  • سياسة واحدة أو أكثر تحدّد سلوك قاعدة الخطأ الخاصة بالشرط المقابل

يُرجى الاطّلاع على التعامل مع الأخطاء.

لا ينطبق لا
DefaultFaultRule

تعالج هذه السياسة أي أخطاء (في النظام أو النقل أو المراسلة أو السياسة) لم تتم معالجتها بشكل صريح من خلال سياسة FaultRule أخرى.

يُرجى الاطّلاع على التعامل مع الأخطاء.

لا ينطبق لا
ScriptTarget
ResourceURL

تحدّد هذه السمة نوع المورد (العقدة) واسم النص البرمجي الرئيسي Node.js الذي ينفّذ وظائف TargetEndpoint.

<ResourceURL>node://server.js</ResourceURL>

يجب تضمين النص البرمجي مع ملفات الموارد الخاصة بخادم وكيل واجهة برمجة التطبيقات. اطّلِع على إضافة Node.js إلى خادم وكيل لواجهة برمجة تطبيقات حالي.

في حال استخدام ScriptTarget، لا تضبط أنواعًا أخرى من اتصالات الهدف (HTTPTargetConnection أو LocalTargetConnection).

لا ينطبق نعم
EnvironmentVariable

يمكنك اختياريًا تمرير متغيرات البيئة إلى النص البرمجي الرئيسي Node.js.

اطّلِع على التعرّف على توافق Edge مع وحدات Node.js.

لا ينطبق لا
Arguments

يمكنك اختياريًا إدخال وسيطات في نص Node.js البرمجي الرئيسي.

اطّلِع على التعرّف على توافق Edge مع وحدات Node.js.

لا ينطبق لا

إعدادات TargetEndpoint لبروتوكول أمان طبقة النقل (TLS)/طبقة المقابس الآمنة (SSL)

غالبًا ما تحتاج TargetEndpoints إلى إدارة اتصالات HTTPS مع بنية أساسية غير متجانسة للخادم الخلفي. لهذا السبب، تتوفّر مجموعة من إعدادات ضبط TLS/SSL.

عناصر إعدادات TargetEndpoint الخاصة ببروتوكول أمان طبقة النقل (TLS)/طبقة المقابس الآمنة (SSL)

الاسم الوصف تلقائي مطلوب؟
SSLInfo
Enabled تشير إلى ما إذا كان بروتوكول أمان طبقة النقل (TLS) أو طبقة المقابس الآمنة (SSL) مفعّلاً لنقطة النهاية. القيمة التلقائية هي true إذا كانت <URL> تحدّد بروتوكول HTTPS، وfalse إذا كانت <URL> تحدّد بروتوكول HTTP. قيمة منطقية صحيحة إذا كان <URL> يحدّد HTTPS لا
TrustStore ملف تخزين مفاتيح يحتوي على شهادات خادم موثوق بها لا ينطبق لا
ClientAuthEnabled إعداد يفعّل مصادقة العميل الصادرة (بروتوكول أمان طبقة النقل/طبقة المقابس الآمنة الثنائي الاتجاه) خطأ لا
KeyStore مخزن مفاتيح يحتوي على مفاتيح خاصة تُستخدم لمصادقة العميل الصادر لا ينطبق نعم (إذا كانت قيمة ClientAuthEnabled هي true)
KeyAlias الاسم المستعار للمفتاح الخاص المستخدَم لمصادقة العميل الصادر لا ينطبق نعم (إذا كانت قيمة ClientAuthEnabled هي true)
Ciphers

الرموز المتوافقة مع بروتوكول أمان طبقة النقل/طبقة المقابس الآمنة الصادر في حال عدم تحديد أي رموز تشفير، سيتم السماح بجميع رموز التشفير المتاحة لجهاز JVM.

لتقييد رموز التشفير، أضِف العناصر التالية التي تسرد رموز التشفير المتوافقة:

<Ciphers>
 <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher>
 <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher>
</Ciphers>
لا ينطبق لا
Protocols

البروتوكولات المتوافقة مع طبقة النقل الآمنة/طبقة المقابس الآمنة الصادرة في حال عدم تحديد أي بروتوكولات، سيتم السماح بجميع البروتوكولات المتاحة لجهاز JVM.

لتقييد البروتوكولات، أضِف العناصر التالية التي تسرد البروتوكولات المتوافقة:

<Protocols>
 <Protocol>TLSv1.1</Protocol>
 <Protocol>TLSv1.2</Protocol>
</Protocols>
لا ينطبق لا
CommonName

إذا تم تحديدها، تكون قيمة يتم التحقّق من صحة الاسم الشائع للشهادة المستهدَفة مقابلها. هذه القيمة صالحة فقط لإعدادات TargetEndpoint وTargetServer. ولا يكون صالحًا لإعدادات VirtualHost.

يتم تلقائيًا مطابقة القيمة المحدّدة تمامًا مع الاسم الشائع للشهادة المستهدَفة. على سبيل المثال، سيؤدي استخدام *.myhost.com كقيمة لـ <CommonName> إلى مطابقة اسم المضيف المستهدف والتحقّق من صحته فقط إذا تم تحديد القيمة *.myhost.com بالضبط كاسم شائع في شهادة المضيف المستهدف.

يمكن أن تجري Apigee عملية المطابقة مع أحرف البدل باستخدام السمة wildcardMatch.

على سبيل المثال، سيتم مطابقة اسم شائع محدّد على أنّه abc.myhost.com في شهادة مستهدَفة والتحقّق من صحته إذا تم تحديد العنصر <CommonName> على النحو التالي:

<CommonName wildcardMatch="true">*.myhost.com</CommonName>
لا ينطبق لا

نموذج TargetEndpoint مع تفعيل مصادقة العميل الصادر

<TargetEndpoint name="default">
  <HttpTargetConnection>
        <URL>https://myservice.com</URL>
    <SSLInfo>
      <Enabled>true</Enabled>
      <ClientAuthEnabled>true</ClientAuthEnabled>
      <KeyStore>myKeystore</KeyStore>
      <KeyAlias>myKey</KeyAlias>
      <TrustStore>myTruststore</TrustStore>
    </SSLInfo>
  </HttpTargetConnection>
</TargetEndpoint>

للحصول على تعليمات تفصيلية، يُرجى الاطّلاع على إعداد بروتوكول أمان النقل (TLS) من Edge إلى الخلفية (السحابة الإلكترونية والسحابة الإلكترونية الخاصة).

استخدام متغيرات التدفق لضبط قيم TLS/SSL بشكل ديناميكي

يمكنك أيضًا ضبط تفاصيل بروتوكول أمان طبقة النقل (TLS) وطبقة المقابس الآمنة (SSL) بشكل ديناميكي لتلبية متطلبات وقت التشغيل المرنة. على سبيل المثال، إذا كان الخادم الوكيل يتصل بهدفَين مختلفَين محتمَلَين (هدف اختبار وهدف إنتاج)، يمكنك أن تجعل خادم API الوكيل يكتشف بشكل آلي البيئة التي يتم استدعاؤها ويضبط مراجع مخزن المفاتيح ومخزن الشهادات الموثوقة بشكل ديناميكي. توضّح مقالة منتدى Apigee التالية هذا السيناريو بالتفصيل وتقدّم أمثلة على خوادم وكيلة لواجهة برمجة التطبيقات يمكن نشرها: Dynamic SSLInfo for TargetEndpoint using variable reference.

في المثال التالي لكيفية ضبط العلامة <SSLInfo> في إعداد TargetEndpoint، يمكن توفير القيم في وقت التشغيل، مثلاً من خلال Java Callout أو سياسة JavaScript أو سياسة Assign Message. استخدِم أيًّا من متغيرات الرسائل التي تحتوي على القيم التي تريد ضبطها.

يُسمح باستخدام المتغيرات في العناصر التالية فقط.

<SSLInfo>
    <Enabled>{myvars.ssl.enabled}</Enabled>
    <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled>
    <KeyStore>{myvars.ssl.keystore}</KeyStore>
    <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias>
    <TrustStore>{myvars.ssl.trustStore}</TrustStore>
</SSLInfo>

استخدام مراجع لضبط قيم TLS/SSL بشكل ديناميكي

عند ضبط إعدادات TargetEndpoint التي تستخدم HTTPS، عليك مراعاة الحالات التي تنتهي فيها صلاحية شهادة TLS/SSL، أو الحالات التي يتطلّب فيها تغيير في إعدادات النظام تعديل الشهادة. في عملية تثبيت Edge for Private Cloud، عند ضبط TLS/SSL باستخدام قيم ثابتة أو باستخدام متغيرات التدفق، قد تحتاج إلى إعادة تشغيل "معالجات الرسائل".

لمزيد من المعلومات، يُرجى الاطّلاع على تعديل شهادة TLS.

ومع ذلك، يمكنك اختياريًا ضبط TargetEndpoint لاستخدام مرجع إلى مخزن المفاتيح أو مخزن الشهادات الموثوقة بدلاً من ذلك. تتمثّل ميزة استخدام مرجع في إمكانية تعديل المرجع للإشارة إلى ملف تخزين مفاتيح أو ملف تخزين موثوق به مختلف من أجل تعديل شهادة TLS/SSL بدون الحاجة إلى إعادة تشغيل &quot;معالجات الرسائل&quot;.

على سبيل المثال، يوضّح ما يلي TargetEndpoint الذي يستخدم مرجعًا إلى مخزن المفاتيح:

<SSLInfo>
    <Enabled>true</Enabled>
    <ClientAuthEnabled>false</ClientAuthEnabled>
    <KeyStore>ref://keystoreref</KeyStore>
    <KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>

استخدِم طلب POST API التالي لإنشاء المرجع المسمّى keystoreref:

curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
-d '<ResourceReference name="keystoreref">
    <Refers>myTestKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:password

يحدّد المرجع اسم ملف تخزين المفاتيح ونوعه.

استخدِم طلب GET API التالي لعرض المرجع:

curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password

لتغيير المرجع لاحقًا للإشارة إلى ملف تخزين مفاتيح مختلف، مع التأكّد من أنّ الاسم المستعار هو نفسه، استخدِم طلب PUT التالي:

curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
-d '<ResourceReference name="keystoreref">
    <Refers>myNewKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:password

TargetEndpoint مع موازنة التحميل المستهدَفة

تتيح TargetEndpoints موازنة التحميل على مستوى عدة خوادم TargetServer مسماة باستخدام ثلاث خوارزميات لموازنة التحميل.

للحصول على تعليمات تفصيلية، يُرجى الرجوع إلى موازنة التحميل على مستوى خوادم الخلفية.

السياسات

يحتوي دليل /policies في خادم وكيل لواجهة برمجة التطبيقات على جميع السياسات المتاحة ليتم ربطها بـ "التدفقات" في خادم وكيل لواجهة برمجة التطبيقات.

عناصر ضبط السياسة

الاسم الوصف تلقائي مطلوب؟
Policy
name

الاسم الداخلي للسياسة. تقتصر الأحرف التي يمكنك استخدامها في الاسم على: A-Za-z0-9._\-$ %. ومع ذلك، تفرض واجهة مستخدم إدارة Edge قيودًا إضافية، مثل إزالة الأحرف غير الأبجدية الرقمية تلقائيًا.

يمكنك اختياريًا استخدام العنصر <DisplayName> لتسمية السياسة في محرّر وكيل واجهة مستخدم الإدارة باسم مختلف بلغة طبيعية.

لا ينطبق نعم
enabled

اضبطها على true لفرض السياسة.

اضبط القيمة على false "لإيقاف" السياسة. ولن يتم فرض السياسة حتى إذا بقيت مرفقة بتدفق.

صحيح لا
continueOnError

اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ إحدى السياسات. وهذا السلوك متوقّع لمعظم السياسات.

اضبط القيمة على true لمواصلة تنفيذ التدفق حتى بعد تعذُّر تنفيذ إحدى السياسات.

خطأ لا
async

ملاحظة: لا تؤدي هذه السمة إلى تنفيذ السياسة بشكل غير متزامن. في معظم الحالات، اترك هذا الخيار بالقيمة التلقائية false.

عند ضبطها على true، يتم نقل تنفيذ السياسة إلى سلسلة محادثات مختلفة، ما يتيح للسلسلة الرئيسية معالجة طلبات إضافية. عند اكتمال المعالجة بلا إنترنت، يعود التنفيذ إلى سلسلة التعليمات البرمجية الرئيسية وينتهي من معالجة تدفق الرسائل. في بعض الحالات، يؤدي ضبط async على true إلى تحسين أداء خادم وكيل واجهة برمجة التطبيقات. ومع ذلك، قد يؤدي الإفراط في استخدام async إلى تدهور الأداء بسبب كثرة عمليات تبديل سلاسل التعليمات.

لاستخدام السلوك غير المتزامن في خوادم API الوكيلة، راجِع نموذج كائن JavaScript.

خطأ لا

مرفق السياسة

تعرض الصورة التالية تسلسل تنفيذ تدفّقات خادم وكيل واجهة برمجة التطبيقات:

تعرض هذه السمة عميلاً يتصل بخدمة HTTP. يواجه الطلب
  ProxyEndpoint وTargetEndpoint، ويحتوي كل منهما على خطوات تؤدي إلى تفعيل السياسات. بعد أن تعرض خدمة HTTP الاستجابة، تتم معالجة الاستجابة من خلال TargetEndpoint ثم ProxyEndpoint قبل إعادتها إلى العميل. وكما هو الحال مع الطلب، تتم معالجة الرد من خلال السياسات ضمن الخطوات.

كما هو موضّح أعلاه:

يتم إرفاق السياسات كخطوات معالجة بالعمليات. يُستخدم اسم السياسة للإشارة إلى السياسة التي سيتم فرضها كخطوة معالجة. يكون تنسيق مرفق السياسة كما يلي:

<Step><Name>MyPolicy</Name></Step>

يتم تطبيق السياسات بالترتيب الذي يتم إرفاقها به في Flow. على سبيل المثال:

<Step><Name>FirstPolicy</Name></Step>
<Step><Name>SecondPolicy</Name></Step>

عناصر إعدادات ربط السياسة

الاسم الوصف تلقائي مطلوب؟
Step
Name اسم السياسة التي سيتم تنفيذها من خلال تعريف الخطوة هذا. لا ينطبق نعم
Condition عبارة شرطية تحدّد ما إذا كان سيتم فرض السياسة أم لا. إذا كانت إحدى السياسات تتضمّن شرطًا مرتبطًا بها، لن يتم تنفيذ السياسة إلا إذا تم تقييم عبارة الشرط على أنّها صحيحة. لا ينطبق لا

عمليات سير العمل

تحدّد ProxyEndpoint وTargetEndpoint مسارًا لمعالجة رسائل الطلبات والردود. تتألف سلسلة المعالجة من مسار طلب ومسار استجابة. يتم تقسيم كل طلب وتدفّق الردود إلى PreFlow وتدفّق واحد أو أكثر من التدفقات "الشرطية" أو "المسماة" الاختيارية، بالإضافة إلى PostFlow.

  • PreFlow: يتم تنفيذه دائمًا. يتم تنفيذه قبل أي مسارات مشروطة.
  • PostFlow: يتم تنفيذه دائمًا. يتم تنفيذه بعد أيّ تدفّقات مشروطة.

بالإضافة إلى ذلك، يمكنك إضافة PostClientFlow إلى ProxyEndpoint، والذي يتم تنفيذه بعد إرجاع الرد إلى تطبيق العميل الذي أرسل الطلب. يمكن ربط سياسة MessageLogging وإضافة Google Stackdriver Logging بهذا المسار فقط. يقلّل PostClientFlow من وقت استجابة خادم وكيل واجهة برمجة التطبيقات، ويتيح تسجيل المعلومات التي لا يتم احتسابها إلا بعد إرجاع الرد إلى العميل، مثل client.sent.start.timestamp وclient.sent.end.timestamp.ويُستخدم هذا المسار بشكل أساسي لقياس الفاصل الزمني بين الطابعَين الزمنيَين لبداية رسالة الرد ونهايتها.

مشاهدة فيديو سريع حول كيفية الاستخدام

الفيديو: شاهِد هذا الفيديو القصير حول استخدام ميزة "تسجيل الرسائل" في PostClientFlow.

في ما يلي مثال على PostClientFlow مع سياسة تسجيل الرسائل مرفقة.

    ...
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
    <PostClientFlow>
        <Request/>
        <Response>
            <Step>
                <Name>Message-Logging-1</Name>
            </Step>
        </Response>
    </PostClientFlow>
    ...

يتم تنفيذ مسار معالجة خادم وكيل واجهة برمجة التطبيقات (API) في "التدفقات" بالتسلسل التالي:

مسار الطلب:

  1. PreFlow لطلبات الخادم الوكيل
  2. مسارات سير العمل الشرطية لطلبات الخادم الوكيل (اختياري)
  3. PostFlow لطلبات الخادم الوكيل
  4. Target Request PreFlow
  5. استهداف مسارات العمل الشرطية للطلبات (اختياري)
  6. Target Request PostFlow

مسار الاستجابة:

  1. Target Response PreFlow
  2. مسارات الردّ الشرطية المستهدَفة (اختياري)
  3. Target Response PostFlow
  4. Proxy Response PreFlow
  5. عمليات سير مشروطة لردود الخادم الوكيل (اختياري)
  6. Proxy Response PostFlow
  7. استجابة PostClientFlow (اختيارية)

يجب ضبط التدفقات التي تتضمّن مرفقات سياسات فقط في إعدادات ProxyEndpoint أو TargetEndpoint. يجب تحديد PreFlow وPostFlow في إعدادات ProxyEndpoint أو TargetEndpoint فقط عندما يلزم فرض سياسة أثناء معالجة PreFlow أو PostFlow.

على عكس التدفقات الشرطية، لا يهم ترتيب عناصر PreFlow وPostFlow، لأنّ خادم وكيل واجهة برمجة التطبيقات سينفّذ كل عنصر في النقطة المناسبة من سلسلة المعالجة، بغض النظر عن موضع ظهوره في إعدادات نقطة النهاية.

التسلسلات الشرطية

تتيح ProxyEndpoints وTargetEndpoints عددًا غير محدود من التدفقات الشرطية (المعروفة أيضًا باسم "التدفقات المسماة").

تختبر خادم وكيل واجهة برمجة التطبيقات الشرط المحدّد في المسار الشرطي، وإذا تم استيفاء الشرط، ينفّذ خادم وكيل واجهة برمجة التطبيقات خطوات المعالجة في المسار الشرطي. إذا لم يتم استيفاء الشرط، يتم تخطّي خطوات المعالجة في المسار الشرطي. يتم تقييم عمليات سير العمل الشرطية بالترتيب المحدّد في خادم وكيل واجهة برمجة التطبيقات، ويتم تنفيذ أول عملية يتم استيفاء شرطها.

من خلال تحديد مسارات شرطية، يمكنك تطبيق خطوات المعالجة في خادم وكيل لواجهة برمجة التطبيقات استنادًا إلى ما يلي:

  • عنوان URI للطلب
  • فعل HTTP (GET/PUT/POST/DELETE)
  • قيمة مَعلمة طلب البحث والعنوان ومَعلمة النموذج
  • العديد من أنواع الحالات الأخرى

على سبيل المثال، يحدّد مسار التنفيذ الشرطي التالي أنّه لا يتم تنفيذه إلا عندما يكون مسار مورد الطلب هو /accesstoken. يؤدي أي طلب وارد يتضمّن المسار /accesstoken إلى تنفيذ هذا المسار، بالإضافة إلى أي سياسات مرتبطة به. إذا لم يتضمّن مسار الطلب اللاحقة /accesstoken، لن يتم تنفيذ المسار (مع أنّه قد يتم تنفيذ مسار شرطي آخر).

<Flows>
  <Flow name="TokenEndpoint">
    <Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition>
    <Request>
      <Step>
        <Name>GenerateAccessToken</Name>
      </Step>
    </Request>
  </Flow>
</Flows>

عناصر إعدادات سير العمل

الاسم الوصف تلقائي مطلوب؟
Flow مسار معالجة الطلبات أو الردود الذي يحدّده ProxyEndpoint أو TargetEndpoint
Name الاسم الفريد لسير العمل. لا ينطبق نعم
Condition عبارة شرطية يتم تقييمها على متغيّر واحد أو أكثر لتحديد ما إذا كانت صحيحة أو خاطئة. يجب أن تحدّد جميع التدفقات، باستثناء نوعَي PreFlow وPostFlow المحدّدين مسبقًا، شرطًا لتنفيذها. لا ينطبق نعم
Request مسار المعالجة المرتبط بمعالجة رسائل الطلبات لا ينطبق لا
Response مسار المعالجة المرتبط بمعالجة رسالة الرد لا ينطبق لا

معالجة الخطوات

يتم فرض الترتيب التسلسلي لعمليات التدفق الشرطية من خلال Apigee Edge. يتم تنفيذ التدفقات الشرطية من الأعلى إلى الأسفل. يتم تنفيذ أول سير عمل شرطي يتم تقييم شرطه على أنّه true، ويتم تنفيذ سير عمل شرطي واحد فقط.

على سبيل المثال، في إعدادات Flow التالية، سيؤدي أي طلب وارد لا يتضمّن لاحقة المسار /first أو /second إلى تنفيذ ThirdFlow، ما يؤدي إلى فرض السياسة المسماة Return404.

<Flows>
  <Flow name="FirstFlow">
    <Condition>proxy.pathsuffix MatchesPath "/first"</Condition>
    <Request>
      <Step><Name>FirstPolicy</Name></Step>
    </Request>
  </Flow>
  <Flow name="SecondFlow">
    <Condition>proxy.pathsuffix MatchesPath "/second"</Condition>
    <Request>
      <Step><Name>FirstPolicy</Name></Step>
      <Step><Name>SecondPolicy</Name></Step>
    </Request>
  </Flow>
  <Flow name="ThirdFlow">
    <Request>
      <Step><Name>Return404</Name></Step>
    </Request>
  </Flow>
</Flows>

المراجع

"الموارد" (ملفات الموارد التي تُستخدَم في خوادم وكيل API) هي نصوص برمجية ورموز برمجية وعمليات تحويل XSL يمكن إرفاقها بـ "عمليات التنفيذ" باستخدام السياسات. تظهر هذه النصوص البرمجية في قسم "النصوص البرمجية" ضمن محرّر خادم وكيل واجهة برمجة التطبيقات في واجهة مستخدم الإدارة.

اطّلِع على ملفات الموارد لمعرفة أنواع الموارد المتوافقة.

يمكن تخزين الموارد في خادم وكيل لواجهة برمجة التطبيقات أو بيئة أو مؤسسة. في كل حالة، تتم الإشارة إلى أحد المراجع بالاسم في إحدى السياسات. تحلّ &quot;خدمات واجهة برمجة التطبيقات&quot; الاسم من خلال الانتقال من خادم وكيل واجهة برمجة التطبيقات إلى البيئة إلى مستوى المؤسسة.

يمكن الإشارة إلى مورد مخزَّن على مستوى المؤسسة من خلال السياسات في أي بيئة. يمكن أن تشير السياسات في البيئة إلى مورد مخزّن على مستوى البيئة. لا يمكن الرجوع إلى مورد مخزّن على مستوى خادم وكيل لواجهة برمجة التطبيقات إلا من خلال السياسات في خادم وكيل واجهة برمجة التطبيقات هذا.