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

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

المزايا

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

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

تتوافق السياسة مع الطلبات عبر 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>

&lt;ServiceCallout&gt; السمات

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

يصف الجدول التالي السمات المشتركة بين جميع العناصر الرئيسية للسياسة:

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

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

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

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

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

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

خطأ اختياري
enabled

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

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

صحيح اختياري
async

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

خطأ منهي العمل به

&lt;DisplayName&gt; عنصر

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

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

لا ينطبق

إذا لم تستخدم هذا العنصر، سيتم ضبط قيمة السمة name للسياسة على النحو التالي: استخدام البيانات المختلفة.

التواجد في المنزل اختياري
النوع سلسلة

&lt;Request&gt; عنصر

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

<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 على تعيين القيم التلقائية التالية:

&lt;Request clearPayload=&quot;true&quot; variable=&quot;servicecallout.request&quot;/&gt;

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

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

servicecallout.request.header.Authorization.

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

السمات

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

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

servicecallout.request اختياري
clearPayload

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

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

صحيح اختياري

&lt;Request&gt;/&lt;IgnoreUnresolvedVariables&gt; عنصر

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

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

&lt;Response&gt; عنصر

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

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

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

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

<المهلة> عنصر

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

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

&lt;HTTPTargetConnection&gt; عنصر

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

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

&lt;HTTPTargetConnection&gt;/&lt;URL&gt; عنصر

عنوان 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>
تلقائي لا ينطبق
الحضور مطلوب
النوع سلسلة

&lt;HTTPTargetConnection&gt;/&lt;SSLInfo&gt; عنصر

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

<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>
تلقائي لا ينطبق
الحضور اختياري
النوع لا ينطبق

&lt;HTTPTargetConnection&gt;/&lt;Properties&gt; عنصر

خصائص نقل بروتوكول 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>
تلقائي لا ينطبق
الحضور اختياري
النوع لا ينطبق

&lt;HTTPTargetConnection&gt;/&lt;LoadBalancer&gt; عنصر

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

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

&lt;LocalTargetConnection&gt; عنصر

تُحدد خادمًا وكيلاً محليًا -- أي وكيل في نفس المؤسسة والبيئة -- مثل الهدف من وسائل شرح الخدمة.

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

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

&lt;LocalTargetConnection&gt;/&lt;APIProxy&gt; عنصر

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

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

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

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

&lt;LocalTargetConnection&gt;/&lt;ProxyEndpoint&gt; عنصر

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

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

&lt;LocalTargetConnection&gt;/&lt;Path&gt; عنصر

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

يمكنك استخدام هذا الوضع بدلاً من زوج <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

يعرض العنوان Content-Length لاستجابة وسيلة شرح الخدمة.

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

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

servicecallout.requesturi

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

معرّف الموارد المنتظم (URI) لـ TargetEndpoint سياسة ServiceCallout معرف الموارد المنتظم (URI) هو عنوان URL لنقطة نهاية الاستهداف بدون مواصفات النطاق والبروتوكول.

servicecallout.{policy-name}.target.url

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

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

calloutResponse.content

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

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

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

servicecallout.{policy-name}.expectedcn

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

الاسم الشائع المتوقع لنقطة النهاية المستهدفة كما هو مُشار إليه في ServiceCallout . ولا يكون ذلك مفيدًا إلا عندما تشير TargetEndpoint إلى طبقة النقل الآمنة/طبقة المقابس الآمنة النهائية.

servicecallout.{policy-name}.failed

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

قيمة منطقية تشير إلى ما إذا كانت السياسة ناجحة أم خطأ أم فشلت أم صحيحة.

الأخطاء

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

أخطاء بيئة التشغيل

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

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

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

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

أخطاء النشر

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

اسم الخطأ السبب إصلاح
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>

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