سياسة وسيلة الشرح

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

الموضوع

تتيح لك سياسة وسائل شرح الخدمة الاتصال بخدمة أخرى من مسار الخادم الوكيل لواجهة برمجة التطبيقات. يمكنك إجراء طلبات عروض أسعار إمّا لخدمة خارجية (مثل نقطة نهاية خدمة RESTful خارجية) أو خدمات داخلية (مثل الخادم الوكيل لواجهة برمجة التطبيقات في المؤسسة والبيئة نفسها).

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

تدعم السياسة الطلبات التي تتم عبر HTTP وHTTPS.

عيّنات

اتصال محلي بخادم وكيل داخلي

<LocalTargetConnection>
    <APIProxy>data-manager</APIProxy>
    <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

في هذا المثال، يتم إنشاء وسيلة شرح لخادم وكيل محلي (أي خادم في المؤسسة والبيئة نفسيهما) يُسمى data-manager، ويحدد نقطة نهاية الخادم الوكيل الخاص به واسمه default.

عنوان URL كمتغيّر

<HTTPTargetConnection>
    <URL>http://example.com/{request.myResourcePath}</URL>
</HTTPTargetConnection>

يستخدم هذا المثال متغيّرًا في عنوان URL لتعبئة عنوان URL المستهدَف ديناميكيًا. لا يمكن تحديد جزء البروتوكول لعنوان URL، http://، باستخدام متغيّر. وعليك أيضًا استخدام متغيّرات منفصلة لجزء النطاق من عنوان URL وباقي عنوان URL.

الترميز الجغرافي من Google / طلب التحديد

<ServiceCallout name="ServiceCallout-GeocodingRequest1">
    <DisplayName>Inline request message</DisplayName>
    <Request variable="authenticationRequest">
      <Set>
        <QueryParams>
          <QueryParam name="address">{request.queryparam.postalcode}</QueryParam>
          <QueryParam name="region">{request.queryparam.country}</QueryParam>
          <QueryParam name="sensor">false</QueryParam>
        </QueryParams>
      </Set>
    </Request>
    <Response>GeocodingResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
      <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
    </HTTPTargetConnection>
</ServiceCallout>
http://maps.googleapis.com/maps/api/geocode/json

بدلاً من استخدام سياسة مثل "تعيين رسالة" لإنشاء كائن الطلب، يمكنك تحديده مباشرةً في سياسة وسائل شرح الخدمة. في هذا المثال، تضبط سياسة وسيلة شرح الخدمة قيم ثلاث مَعلمات طلب البحث التي يتم تمريرها إلى الخدمة الخارجية. يمكنك إنشاء رسالة طلب كاملة في سياسة "وسيلة شرح الخدمة" تحدّد حمولة البيانات ونوع الترميز مثل application/xml والعناوين ومعلَمات النموذج وما إلى ذلك.

في ما يلي مثال آخر تمّ فيه تقديم الطلب قبل الوصول إلى سياسة وسائل شرح الخدمة.

<ServiceCallout name="ServiceCallout-GeocodingRequest2">
    <Request clearPayload="false" variable="GeocodingRequest"/>
    <Response>GeocodingResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
      <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
    </HTTPTargetConnection>
</ServiceCallout>

يتم استخراج محتوى رسالة الطلب من متغيّر يُسمّى GeocodingRequest (يمكن تعبئته باستخدام سياسة AssignMessage على سبيل المثال). ويتم تخصيص رسالة الاستجابة لمتغيّر يُسمّى GeocodingResponse، حيث تتوفر الرسالة للتحليل من خلال سياسة استخراج المتغيرات أو من خلال رمز مخصّص مكتوب بلغة JavaScript أو Java. تنتظر السياسة مدة 30 ثانية إلى أن يصل ردّ من Google Geocoding API قبل انتهاء المهلة.

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

الخوادم المستهدفة للاتصال

<ServiceCallout async="false" continueOnError="false" enabled="true" name="service-callout">
    <DisplayName>service-callout</DisplayName>
    <Properties/>
    <Request clearPayload="true" variable="myRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    </Request>
    <Response>myResponse</Response>
    <HTTPTargetConnection>
        <LoadBalancer>
            <Algorithm>RoundRobin</Algorithm>
            <Server name="httpbin"/>
            <Server name="yahoo"/>
        </LoadBalancer>
        <Path>/get</Path>
    </HTTPTargetConnection>
</ServiceCallout>

تستخدم هذه السياسة سمة LoadBalancer لطلب الخوادم المستهدفة وموازنة التحميل عبرها. في هذا المثال، يتم توزيع التحميل على خادمين مستهدفين باسم "httpbin" و "yahoo". للحصول على معلومات حول إعداد الخوادم المستهدفة للخادم الوكيل وضبط موازنة التحميل، يُرجى الاطّلاع على موازنة التحميل عبر الخوادم الخلفية.


لمحة عن سياسة وسائل شرح الخدمة

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

ويتم عادةً استخدام وسيلة شرح مع سياستَين أخريين: "تخصيص الرسالة" و"استخراج المتغيرات".

  • الطلب: يؤدي تعيين الرسالة إلى تعبئة رسالة الطلب المرسلة إلى الخدمة البعيدة.
  • الرد: يحلّل "استخراج المتغيّرات" الاستجابة ويستخرج محتوى معيّنًا.

وتتضمّن تركيبة سياسة وسائل شرح الخدمة النموذجية ما يلي:

  1. تعيين سياسة الرسالة: ينشئ رسالة طلب، ويملأ عناوين HTTP، ومعلَمات طلب البحث، ويضبط فعل HTTP، وما إلى ذلك.
  2. سياسة وسيلة شرح الخدمة: تشير إلى رسالة تم إنشاؤها بواسطة سياسة "تخصيص الرسالة"، وتحدّد عنوان URL المستهدف للمكالمة الخارجية، وتحدّد اسمًا لكائن الاستجابة الذي تعرضه الخدمة المستهدفة.

    لتحسين الأداء، يمكنك أيضًا تخزين الردود على وسيلة شرح الخدمة مؤقتًا، كما هو موضّح في سلسلة محادثات منتدى Apigee هذه: https://community.apigee.com/questions/34110/how-can-i-store-the-results-of-the-servicecallout.html.
  3. سياسة استخراج المتغيّرات: تحدّد عادةً تعبير JSONPath أو XPath الذي يحلّل الرسالة الناتجة عن وسيلة شرح الخدمة. بعد ذلك، تضبط السياسة المتغيّرات التي تتضمّن القيم التي تم تحليلها من استجابة وسيلة شرح الخدمة.

راجِع استخدام تكوين السياسة للحصول على نموذج كامل للخادم الوكيل لواجهة برمجة التطبيقات الذي يستخدم سياسة "وسائل شرح الخدمة" إلى جانب سياسات "تعيين الرسائل" و"استخراج المتغيرات".

معالجة الأخطاء المخصّصة

مرجع العنصر

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

<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">
    <DisplayName>Custom label used in UI</DisplayName>
    <Request clearPayload="true" variable="myRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <Remove>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
         </Remove>
         <Copy>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
        </Copy>
        <Add>
            <Headers/>
            <QueryParams/>
            <FormParams/>
        </Add>
        <Set>
            <Headers/>
            <QueryParams/>
            <FormParams/>
            <Payload/>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
        </Set>
    </Request>
    <Response>calloutResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
        <URL>http://example.com</URL>
        <LoadBalancer/>
        <SSLInfo/>
        <Properties/>
    </HTTPTargetConnection>
    <LocalTargetConnection>
        <APIProxy/>
        <ProxyEndpoint/>
        <Path/>
    </LocalTargetConnection>
</ServiceCallout>

سمات <ServiceCallout>

<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">

يوضِّح الجدول التالي السمات الشائعة لجميع العناصر الرئيسية للسياسة:

السمة الوصف تلقائي التواجد في المنزل
name

الاسم الداخلي للسياسة وقد تحتوي قيمة السمة name على أحرف وأرقام ومسافات وواصلات وشرطات سفلية ونقاط. لا يمكن أن تتجاوز هذه القيمة 255 حرفًا.

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

لا ينطبق مطلوبة
continueOnError

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

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

false إجراء اختياري
enabled

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

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

صحيح إجراء اختياري
async

تم إيقاف هذه السمة نهائيًا.

false منهي العمل به

العنصر <DisplayName>

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

<DisplayName>Policy Display Name</DisplayName>
تلقائي

لا ينطبق

إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة السمة name الخاصة بالسياسة.

التواجد في المنزل إجراء اختياري
Type سلسلة

عنصر <الطلب>

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

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Remove>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Remove>
    <Copy>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Copy>
    <Add>
        <Headers/>
        <QueryParams/>
        <FormParams/>
    </Add>
    <Set>
        <Headers/>
        <QueryParams/>
        <FormParams/>
        <Payload/>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Set>
</Request>

بنية العلامات <Remove> و<Copy> و<Add> و<Set> هي نفسها بنية سياسة تعيين رسالة.

تعرض السياسة رسالة خطأ إذا تعذّر حلّ رسالة الطلب أو إذا كانت رسالة الطلب هذه غير صالحة.

في أبسط مثال، يمكنك ضبط متغيّر يحتوي على رسالة الطلب التي تمت تعبئتها في وقت سابق خلال تدفق الخادم الوكيل لواجهة برمجة التطبيقات:

<Request clearPayload="true" variable="myRequest"/>

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

<Request>
  <Set>
    <Headers>
      <Header name="Accept">application/json</Header>
    </Headers>
    <Verb>POST</Verb>
    <Payload contentType="application/json">{"message":"my test message"}</Payload>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request>
تلقائي إذا حذفت عنصر الطلب أو أي من سماته، يعيّن Edge القيم التلقائية التالية:

<Request clearPayload="true"Variable="servicecallout.request"/>

لنلقِ نظرة على ما تعنيه هذه القيم الافتراضية. أولاً، يُقصد بالسمة clearPayload=true إنشاء كائن طلب جديد في كل مرة يتم فيها تنفيذ سياسة ServiceCallout. وهذا يعني أنّه لا يمكن أبدًا استخدام الطلب ومسار معرّف الموارد المنتظم (URI) للطلب. ثانيًا، الاسم التلقائي للمتغيّر servicecallout.request هو اسم محجوز يتم تخصيصه للطلب في حال عدم توفير اسم.

من المهم معرفة هذا الاسم التلقائي إذا كنت تستخدم ميزة إخفاء البيانات. وإذا حذفت اسم المتغيّر، ستحتاج إلى إضافة السمة servicecallout.request إلى إعدادات القناع. على سبيل المثال، إذا أردت إخفاء عنوان التفويض بحيث لا يظهر في جلسات التتبُّع، يمكنك إضافة ما يلي إلى إعدادات الإخفاء لالتقاط الاسم التلقائي:

servicecallout.request.header.Authorization.

الحضور اختياريّ.
النوع لا ينطبق

السمات

السمة الوصف تلقائي التواجد في المنزل
متغيّر

اسم المتغيّر الذي سيحتوي على رسالة الطلب.

servicecallout.request اختياري
clearPayload

إذا تم إدخال true، سيتم محو المتغيّر الذي يحتوي على رسالة الطلب بعد إرسال الطلب إلى هدف HTTP لإخلاء مساحة تخزين في الذاكرة المستخدمة في رسالة الطلب.

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

صحيح اختياري

عنصر <Request>/<تجاهلUnresolvedVariables>

عند ضبط السياسة على true، تتجاهل السياسة أي خطأ متغيّر لم يتم حله في الطلب.

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request> 
تلقائي false
الحضور اختياري
النوع منطقي

عنصر <Response>

يمكنك تضمين هذا العنصر عندما يتطلب منطق الخادم الوكيل لواجهة برمجة التطبيقات الحصول على استجابة من الاتصال عن بُعد لإجراء المزيد من المعالجة.

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

في حال حذف هذا العنصر، لا ينتظر الخادم الوكيل لواجهة برمجة التطبيقات ردًا، ويستمر تنفيذ تدفق الخادم الوكيل لواجهة برمجة التطبيقات مع أي خطوات لاحقة. لتوضيح الأمر أيضًا، بدون عنصر Response، لا تكون الاستجابة من الهدف متاحة للمعالجة من خلال خطوات لاحقة، وما مِن طريقة يمكن من خلالها لتدفق الخادم الوكيل اكتشاف حدوث إخفاق في المكالمة عن بُعد. من الاستخدامات الشائعة لحذف العنصر Response عند استخدام ServiceCallout: تسجيل الرسائل إلى نظام خارجي.

 <Response>calloutResponse</Response> 
تلقائي لا ينطبق
الحضور اختياري
النوع سلسلة

عنصر <Timeout>

الوقت بالملي ثانية الذي ستنتظر فيه سياسة "وسائل شرح الخدمة" تلقّي استجابة من الهدف. ولا يمكنك ضبط هذه القيمة ديناميكيًا في وقت التشغيل. في حال انتهت مهلة وسيلة شرح الخدمة، سيتم عرض HTTP 500، وسيتعذّر تنفيذ السياسة، وسينتقل الخادم الوكيل لواجهة برمجة التطبيقات إلى حالة خطأ، كما هو موضّح في أخطاء المعالجة.

<Timeout>30000</Timeout>
تلقائي 55,000 ملي ثانية (55 ثانية)، الإعداد التلقائي لمهلة HTTP في Apigee Edge
الحضور اختياري
النوع عدد صحيح

عنصر <HTTPTargetConnection>

توفر تفاصيل النقل، مثل خصائص عنوان URL وطبقة النقل الآمنة/طبقة المقابس الآمنة وHTTP. يمكنك الاطّلاع على مرجع إعدادات <TargetEndpoint>.

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <LoadBalancer/>
    <SSLInfo/>
    <Properties/>
</HTTPTargetConnection>
تلقائي لا ينطبق
الحضور مطلوبة
النوع لا ينطبق

العنصر <HTTPTargetConnection>/<URL>

عنوان URL للخدمة التي يتم طلبها:

<HTTPTargetConnection>
    <URL>http://example.com</URL>
</HTTPTargetConnection>

يمكنك توفير جزء من عنوان URL ديناميكيًا باستخدام متغير. ولا يمكن تحديد جزء البروتوكول لعنوان URL، http:// أدناه، بواسطة متغيّر. في المثال التالي، يمكنك استخدام متغيّر لتحديد قيمة معلَمة طلب البحث:

<URL>http://example.com/forecastrss?w=${request.header.woeid}</URL>

أو اضبط جزءًا من مسار عنوان URL باستخدام متغيّر:

<URL>http://example.com/{request.resourcePath}?w=${request.header.woeid}</URL>

إذا كنت تريد استخدام متغيّر لتحديد النطاق ومنفذ عنوان URL، استخدِم متغيّرًا واحدًا للنطاق والمنفذ فقط، ومتغيّرًا آخر لأي جزء آخر من عنوان URL:

<URL>http://{request.dom_port}/{request.resourcePath}</URL>
تلقائي لا ينطبق
الحضور مطلوبة
النوع سلسلة

العنصر <HTTPTargetConnection>/<SSLInfo>

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

<HTTPTargetConnection>
    <URL>https://example.com</URL>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>ref://mykeystoreref</KeyStore>  ## Use of a reference is recommended
        <KeyAlias>myKey</KeyAlias>
        <TrustStore>myTruststore</TrustStore>
        <Ciphers/>
        <Protocols/>
    </SSLInfo>
</HTTPTargetConnection>
تلقائي لا ينطبق
الحضور اختياري
النوع لا ينطبق

العنصر <HTTPTargetConnection>/<Properties>

خصائص نقل HTTP إلى خدمة الخلفية. لمزيد من المعلومات، يُرجى الاطّلاع على مرجع خصائص نقطة النهاية.

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <Properties>
        <Property name="allow.http10">true</Property>
        <Property name="request.retain.headers">
          User-Agent,Referer,Accept-Language
        </Property>
    </Properties>
</HTTPTargetConnection>
تلقائي لا ينطبق
الحضور اختياري
النوع لا ينطبق

العنصر <HTTPTargetConnection>/<LoadBalancer>

استدع واحدًا أو أكثر من الخوادم الهدف وأجرِ موازنة التحميل عليها. اطّلِع على نموذج الخوادم المستهدفة للمكالمات في قسم "النماذج". راجِع أيضًا موازنة التحميل عبر الخوادم الخلفية. ويمكنك أيضًا الاطّلاع على هذه المشاركة في المنتدى التي تناقش طرق الاتصال بالخوادم المستهدفة من كل من سياسة وسائل شرح الخدمة واستخدام قواعد المسارات.

<HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="httpbin"/> <Server name="yahoo"/> </LoadBalancer> <Path>/get</Path> </HTTPTargetConnection>
تلقائي لا ينطبق
الحضور اختياري
النوع غير متوفّر

عنصر <LocalTargetConnection>

يحدّد خادمًا وكيلاً محليًا، أي خادم وكيل في المؤسسة والبيئة نفسها، كهدف لوسائل الشرح للخدمة.

لتحديد الهدف بشكل أكبر، استخدِم العنصرَين <APIProxy> و<ProxyEndpoint> أو العنصر <Path>.

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
   <Path/>
</LocalTargetConnection>
تلقائي لا ينطبق
الحضور مطلوبة
النوع لا ينطبق

العنصر <LocalTargetConnection>/<APIProxy>

اسم الخادم الوكيل لواجهة برمجة التطبيقات الذي يستهدف مكالمة محلية. يجب أن يكون الخادم الوكيل في مؤسسة وبيئة الخادم الوكيل نفسهما الذي يُجري الطلب.

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

مع العنصر <APIProxy>، يمكنك تضمين العنصر <ProxyEndpoint> لتحديد اسم نقطة نهاية الخادم الوكيل التي يجب استهدافها للمكالمة.

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
</LocalTargetConnection> 
تلقائي لا ينطبق
الحضور مطلوبة
النوع سلسلة

العنصر <LocalTargetConnection>/<ProxyEndpoint>

اسم نقطة نهاية الخادم الوكيل التي يجب أن تكون هدف عمليات الاستدعاء. هذه نقطة نهاية للخادم الوكيل في الخادم الوكيل لواجهة برمجة التطبيقات المُحدَّد بالعنصر <APIProxy>.

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>
تلقائي لا ينطبق
الحضور اختياري
النوع لا ينطبق

عنصر <LocalTargetConnection>/<Path>

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

استخدِم هذا الرابط بدلاً من زوج <APIProxy>/<ProxyEndpoint> في حال كنت لا تعرف أو لا يمكنك الاعتماد على اسم الخادم الوكيل. قد يكون المسار هدفًا موثوقًا به.

<LocalTargetConnection>
   <Path>/data-manager</Path>
</LocalTargetConnection>
تلقائي لا ينطبق
الحضور اختياري
النوع لا ينطبق

المخططات

متغيرات التدفق

تعمل متغيرات التدفق على تفعيل السلوك الديناميكي للسياسات والمسارات في وقت التشغيل، استنادًا إلى عناوين HTTP أو محتوى الرسالة أو سياق التدفق. تتوفر متغيرات التدفق المحددة مسبقًا التالية بعد تنفيذ سياسة وسيلة شرح الخدمة. لمزيد من المعلومات عن متغيّرات التدفق، يُرجى الاطّلاع على مرجع المتغيرات.

لوسائل شرح الخدمة طلبات وردود خاصة بها، ويمكنك الوصول إلى تلك البيانات من خلال المتغيّرات. بما أنّ الرسالة تستخدم البادئتين request.* وresponse.*، يمكنك استخدام البادئتين myrequest.* وcalloutResponse.* (القيمتان التلقائيتان في ضبط وسيلة شرح الخدمة) للحصول على بيانات الرسائل الخاصة بوسيلة شرح الخدمة. يوضّح المثال الأول في الجدول التالي كيفية الحصول على عناوين HTTP في وسيلة شرح الخدمة.

متغير الوصف

في ما يلي مثال على الحصول على عناوين طلبات وسائل شرح الخدمة وعناوين الاستجابة بشكل مشابه للطريقة التي تحصل بها على العناوين من الطلب والاستجابة الرئيسيَين.

calloutResponse.header.HeaderName

myRequest.header.HeaderName

حيث يكون calloutResponse هو اسم المتغير للاستجابة في وسيلة شرح الخدمة، وmyRequest هو اسم المتغير الخاص بالطلب. مثال:

calloutResponse.header.Content-Length

لعرض عنوان طول المحتوى لاستجابة وسيلة شرح الخدمة.

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

عنوان رسالة في طلب وسيلة شرح الخدمة أو الاستجابة لها. على سبيل المثال، إذا كان استهداف الخادم الوكيل لواجهة برمجة التطبيقات هو http://example.com، وهدف وسيلة شرح الخدمة هو http://mocktarget.apigee.net، تكون هذه المتغيّرات هي رؤوس وسيلة الشرح إلى http://mocktarget.apigee.net.

servicecallout.requesturi

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

معرِّف الموارد المنتظم (URI) لنقطة النهاية المستهدَف لسياسة طريقة عرض الخدمة. معرّف الموارد المنتظم (URI) هو عنوان URL لنقطة النهاية المستهدَف بدون مواصفات البروتوكول والنطاق.

servicecallout.{policy-name}.target.url

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

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

calloutResponse.content

حيث يكون calloutResponse هو <Response>اسم المتغيّر في إعداد وسيلة شرح الخدمة.

النطاق: من الردّ على وسيلة شرح الخدمة
النوع: سلسلة
الإذن: قراءة/كتابة

نص الاستجابة من وسيلة شرح الخدمة.

servicecallout.{policy-name}.expectedcn

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

تمثّل هذه السمة الاسم الشائع المتوقَّع لـ TargetEndpoint على النحو المُشار إليه في سياسة ServiceCallout. ويكون ذلك مفيدًا فقط عندما تشير نقطة نهاية TargetEndpoint إلى نقطة نهاية بروتوكول أمان طبقة النقل (TLS)/طبقة المقابس الآمنة.

servicecallout.{policy-name}.failed

النطاق: من الردّ على وسيلة شرح الخدمة
النوع: منطقي
الإذن: قراءة/كتابة

قيمة منطقية تشير إلى ما إذا نجحت السياسة أم لا، أو "خطأ"، أو تعذّر، أو صواب.

الأخطاء

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

أخطاء في وقت التشغيل

يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.

رمز الخطأ رموز حالة HTTP السبب إصلاح
steps.servicecallout.ExecutionFailed 500

يمكن أن يحدث هذا الخطأ في الحالات التالية:

  • يُطلَب من السياسة معالجة الإدخال المكتوب بشكلٍ غير صحيح أو غير صالح.
  • خدمة الهدف في الخلفية تعرض حالة خطأ (بشكل افتراضي، 4xx أو 5xx).
steps.servicecallout.RequestVariableNotMessageType 500 إنّ متغيّر الطلب المحدَّد في السياسة ليس من نوع "الرسائل". على سبيل المثال، إذا كانت القيمة سلسلة أو نوعًا آخر لا يمثّل رسائل، سيظهر لك هذا الخطأ.
steps.servicecallout.RequestVariableNotRequestMessageType 500 لا يكون متغيّر الطلب المحدَّد في السياسة من نوع "Request Message". على سبيل المثال، إذا كان نوع الاستجابة، سترى هذا الخطأ.

أخطاء النشر

يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يحتوي على هذه السياسة.

اسم الخطأ السبب إصلاح
URLMissing العنصر <URL> في <HTTPTargetConnection> غير متوفّر أو فارغ.
ConnectionInfoMissing يحدث هذا الخطأ إذا كانت السياسة لا تحتوي على العنصر <HTTPTargetConnection> أو <LocalTargetConnection>.
InvalidTimeoutValue يحدث هذا الخطأ إذا كانت قيمة <Timeout> سالبة أو صفرية.

متغيرات الخطأ

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

المتغيرات المكان مثال
fault.name="fault_name" fault_name هو اسم الخطأ، كما هو موضَّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير من رمز الخطأ. fault.name = "RequestVariableNotMessageType"
servicecallout.policy_name.failed policy_name هو اسم السياسة التي حدّدها المستخدم التي أدت إلى حدوث الخطأ. servicecallout.SC-GetUserData.failed = true

مثال على الردّ على الخطأ

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.servicecallout.RequestVariableNotMessageType"
      },
      "faultstring":"ServiceCallout[ServiceCalloutGetMockResponse]: 
            request variable data_str value is not of type Message"
   }
}

مثال لقاعدة خطأ

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="RequestVariableNotMessageType">
    <Step>
        <Name>AM-RequestVariableNotMessageType</Name>
    </Step>
    <Condition>(fault.name = "RequestVariableNotMessageType")</Condition>
</FaultRule>

مواضيع ذات صلة