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

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستند Apigee X.
المعلومات

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

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

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

التطوير المحلي لإعدادات الخادم الوكيل

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

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

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

  1. نزِّل إعدادات الخادم الوكيل الحالية في واجهة مستخدم Edge. (في عرض خوادم واجهة برمجة التطبيقات، اختَر المشروع > تنزيل النسخة السابقة.)
  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.
ضبط نقطة النهاية المستهدفة إعدادات اتصال HTTP الصادر (من Apigee Edge إلى خدمة الخلفية) وتدفقات الطلبات والاستجابة ومرفقات السياسات. يُرجى الاطّلاع على TargetEndpoint.
التدفقات طلبات ProxyEndpoint وTargetEndpoint والاستجابة التي يمكن إرفاق السياسات بها. راجِع التدفقات.
السياسات ملفات الإعداد بتنسيق XML التي تتوافق مع مخططات سياسة Apigee Edge. يمكنك الاطّلاع على السياسات.
المراجع النصوص البرمجية وملفات JAR وملفات XML المشار إليها من خلال السياسات لتنفيذ منطق مخصّص. راجِع المراجع.

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

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

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

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

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

الضبط الأساسي

/apiproxy/weatherapi.xml

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

نموذج الضبط:

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

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

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

ملاحظة: يتوفر متجر المواصفات في تجربة New Edge فقط. ولمزيد من المعلومات عن متجر المواصفات، يُرجى الاطّلاع على إدارة المواصفات ومشاركتها.
لا ينطبق لا
TargetServers قائمة بـ TargetServers المشار إليها في أي TargetEndpoints من الخادم الوكيل لواجهة برمجة التطبيقات هذا. لن يظهر لك عادةً هذا العنصر إلا عند إنشاء الخادم الوكيل لواجهة برمجة التطبيقات باستخدام واجهة مستخدم إدارة 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. يجب أن تكون فريدة ضمن ضبط الخادم الوكيل لواجهة برمجة التطبيقات، في حال تحديد عدة نقاط ProxyEndpoints (في حالات نادرة). وتقتصر الأحرف التي يُسمح لك باستخدامها في الاسم على ما يلي: A-Za-z0-9._\-$ %. لا ينطبق نعم
PreFlow تحدد السياسات في تدفق الطلب أو الرد في الإعداد المسبق. لا ينطبق نعم
Flows
تحدد السياسات في المسارات المشروطة للطلب أو الرد.
لا ينطبق نعم
PostFlow
تحدِّد السياسات في مسار PostFlow لطلب أو ردّ.
لا ينطبق نعم
HTTPProxyConnection يُحدِّد عنوان الشبكة ومسار معرّف الموارد المنتظم (URI) المرتبط بالخادم الوكيل لواجهة برمجة التطبيقات.
BasePath

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

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

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

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

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

/ نعم
VirtualHost

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

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

يتم تلقائيًا تحديد مضيفين VirtualHosts باسمين لبيئة معيّنة، وهما: 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 هي عبارة شرطية اختيارية تُستخدَم للتوجيه الديناميكي في وقت التشغيل. وتُعدّ قواعد RouteRules المشروطة مفيدة، على سبيل المثال، لتفعيل التوجيه المستند إلى المحتوى لإتاحة عمل إصدارات الخلفية. لا ينطبق لا
TargetEndpoint

سلسلة اختيارية تُحدِّد إعداد TargetEndpoint مُسمّى. قيمة TargetEndpoint المُسماة هي أي "TargetEndpoint" (نقطة نهاية محددة) تم تحديدها في الخادم الوكيل نفسه لواجهة برمجة التطبيقات ضمن الدليل /targets).

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

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

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

كيفية ضبط قواعد التوجيه

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

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

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

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

يمكن أيضًا لـ ProxyEndpoint استدعاء خدمة خلفية مباشرةً. يتجاوز استدعاء عنوان URL المباشر أي إعداد مُسمّى لنقاط النهاية المستهدفة ضمن /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 أو محتوى الرسالة أو معلَمات طلب البحث أو المعلومات السياقية مثل الوقت من اليوم واللغة وما إلى ذلك.

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

على سبيل المثال، تقيّم مجموعة RouteRule التالية أولاً الطلب الوارد للتحقّق من قيمة عنوان HTTP. وإذا كان عنوان HTTP routeTo يحتوي على القيمة TargetEndpoint1، تتم إعادة توجيه الطلب إلى نقطة النهاية الهدف باسم 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. وتمر الاستجابة عبر النهاية المستهدفة ثم نقطة نهاية الخادم الوكيل قبل عرضها على البرنامج.

استهداف نقطة النهاية هو مكافئ صادر لـ ProxyEndpoint. تعمل نقطة النهاية كعميل لخدمة الخلفية أو واجهة برمجة التطبيقات، حيث ترسِل الطلبات وتتلقّى الردود.

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

إعداد نقطة النهاية المستهدفة

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

عناصر ضبط نقطة النهاية المستهدفة

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

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

اضبط مصدرًا واحدًا فقط من هذه الإعدادات في TargetEndpoint.

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

مع العناصر الفرعية، يتم تحديد مدى وصول مورد الخلفية عبر HTTP.

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

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

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

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

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

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

لتحديد المورد الهدف، يمكنك تضمين العنصر الفرعي APIProxy (مع عنصر ProxyEndpoint) أو العنصر الفرعي "المسار".

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

إذا كنت تستخدم 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.

لا ينطبق لا

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

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

عناصر إعداد نقطة النهاية الهدف (TLS)/طبقة المقابس الآمنة (SSL)

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

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

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

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

البروتوكولات المتوافقة مع بروتوكول أمان طبقة النقل (TLS)/طبقة المقابس الآمنة (SSL) الصادرة. إذا لم يتم تحديد أي بروتوكولات، سيتم السماح بجميع البروتوكولات المتاحة لجهاز 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) وطبقة المقابس الآمنة بشكل ديناميكي

ويمكنك أيضًا ضبط تفاصيل بروتوكول أمان طبقة النقل أو طبقة المقابس الآمنة ديناميكيًا لتلبية متطلبات وقت التشغيل المرن. على سبيل المثال، إذا كان الخادم الوكيل يتصل بهدفين من المحتمل أن يكونا مختلفَين (هدف اختباري وهدف إنتاج)، يمكنك أن تطلب من الخادم الوكيل لواجهة برمجة التطبيقات اكتشاف البيئة التي يتصل بها بشكل آلي وإضافة مراجع ديناميكية إلى ملف تخزين المفاتيح وملف تخزين المفاتيح الملائمَين. تشرح مقالة "منتدى Apigee" التالية هذا السيناريو بمزيد من التفصيل، وتقدّم أمثلة عن الخادم الوكيل لواجهة برمجة التطبيقات القابلة للنشر: https://community.apigee.com/articles/21424/dynamic-sslinfo-for-targetendpoint-using-variable.html.

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

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

<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)/طبقة المقابس الآمنة بشكل ديناميكي

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

لمعرفة مزيد من المعلومات، يُرجى الاطّلاع على تعديل شهادة بروتوكول أمان طبقة النقل (TLS).

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

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

<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 مع موازنة التحميل الهدف

تدعم نقاط النهاية المستهدفة موازنة التحميل على مستوى عدة خوازمات مسماة من TargetServers، وذلك باستخدام ثلاث خوارزميات لموازنة التحميل.

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

السياسات

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

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

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

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

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

لا ينطبق نعم
enabled

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

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

صحيح لا
continueOnError

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

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

false لا
async

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

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

لاستخدام السلوك غير المتزامن في الخوادم الوكيلة لواجهة برمجة التطبيقات، يُرجى الاطّلاع على نموذج عنصر JavaScript.

false لا

مرفق السياسة

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

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

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

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

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

يتم فرض السياسات بالترتيب الذي يتم تطبيقها به في التدفق. مثال:

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

عناصر ضبط مرفقات السياسة

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

التدفقات

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

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

بالإضافة إلى ذلك، يمكنك إضافة PostClientFlow إلى ProxyEndpoint، إذ يتم تنفيذه بعد إرجاع الاستجابة إلى تطبيق العميل الطالب. لا يمكن إرفاق سوى سياسة MessageLogging وإضافة تسجيل الدخول Google Stackdriver في هذا المسار. يقلل 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>
    ...

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

مسار الطلب:

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

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

  1. التدفق المُسبَق للاستجابة المستهدَفة
  2. التدفقات الشَرطية للاستجابة المستهدفة (اختيارية)
  3. PostFlow للاستجابة المستهدَفة
  4. التدفق المُسبَق لاستجابة الخادم الوكيل
  5. التدفقات الشرطية لاستجابة الخادم الوكيل (اختياري)
  6. 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 يشير هذا المصطلح إلى مسار معالجة الطلبات أو الاستجابة يتم تحديده من قِبل A ProxyEndpoint أو TargetEndpoint.
Name تمثّل هذه السمة الاسم الفريد للتدفق. لا ينطبق نعم
Condition يشير ذلك المصطلح إلى عبارة شرطية تقيّم متغيّرًا أو أكثر ليتم تقييمه على أنّه صحيح أو خطأ. يجب أن تحدّد جميع التدفقات، باستثناء نوعَي PreFlow وPostFlow المحدّدَين مسبقًا، شرطًا لتنفيذها. لا ينطبق نعم
Request مسار المعالجة المرتبط بمعالجة "طلب" الرسائل لا ينطبق لا
Response مسار المعالجة المرتبط بمعالجة رسالة الرد لا ينطبق لا

جارٍ معالجة الخطوة

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

على سبيل المثال، في إعدادات التدفق التالي، سيؤدي أي طلب وارد لا يتضمّن لاحقة المسار /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>

المراجع

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

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

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

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