مشاركة عبر


Forward request

ينطبق على: جميع مستويات إدارة واجهة برمجة التطبيقات

forward-requestيعيد النهج توجيه الطلب الوارد إلى خدمة الواجهة الخلفية المحددة في سياق الطلب . يتم تحديد عنوان URL لخدمة الواجهة الخلفية في إعدادات API ويمكن تغييرها باستخدام نهج تعيين خدمة الخلفية.

Important

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

Note

تعيين عناصر النهج والعناصر التابعة بالترتيب الوارد في بيان النهج. تعلم كيفية إعداد نُهج APIM أو تعديلها.

Policy statement

<forward-request http-version="1 | 2or1 | 2" timeout="time in seconds (alternatively, use timeout-ms)" | timeout-ms="time in milliseconds (alternatively, use timeout)" continue-timeout="time in seconds" follow-redirects="false | true" buffer-request-body="false | true" buffer-response="true | false" fail-on-error-status-code="false | true"/>

Attributes

Attribute Description Required Default
timeout مقدار الوقت بالثواني لانتظار إرجاع رؤوس استجابة HTTP بواسطة خدمة الواجهة الخلفية قبل ظهور خطأ انتهاء المهلة. الحد الأدنى للقيمة هو 0 ثانية. قد لا يتم احترام القيم الأكبر من 240 ثانية، لأن البنية الأساسية للشبكة الأساسية يمكن أن تسقط الاتصالات الخاملة بعد هذا الوقت. يتم السماح بتعبيرات النهج. يمكنك تحديد إما timeout أو timeout-ms ليس كليهما. No 300
timeout-ms مقدار الوقت بالمللي ثانية لانتظار إرجاع رؤوس استجابة HTTP بواسطة خدمة الواجهة الخلفية قبل ظهور خطأ انتهاء المهلة. الحد الأدنى للقيمة هو 0 مللي ثانية. يتم السماح بتعبيرات النهج. يمكنك تحديد إما timeout أو timeout-ms ليس كليهما. No N/A
continue-timeout مقدار الوقت بالثوان لانتظار 100 Continue إرجاع رمز الحالة بواسطة خدمة الواجهة الخلفية قبل ظهور خطأ المهلة. يتم السماح بتعبيرات النهج. No N/A
http-version إصدار بروتوكول HTTP لاستخدامه عند إرسال طلب HTTP إلى خدمة الواجهة الخلفية:
- 1: HTTP/1
- 2: HTTP/2
- 2or1: تفضل البوابة HTTP/2 عبر HTTP/1، ولكنها تعود إلى HTTP/1 إذا لم يعمل HTTP/2.

يتم دعم HTTP/2 الصادر في بوابات محددة. راجع ملاحظات الاستخدام للحصول على التفاصيل.
No 1
follow-redirects تحديد ما إذا كانت عمليات إعادة التوجيه من خدمة الواجهة الخلفية متبوعة بالعبارة أو يتم إرجاعها إلى المتصل. يتم السماح بتعبيرات النهج. No false
buffer-request-body عند التعيين إلى true، يتم تخزين الطلب مؤقتا وسيتم إعادة استخدامه عند إعادة المحاولة. No false
buffer-response يؤثر على معالجة الاستجابات المقسمة. عند التعيين إلى false، يتم إرجاع كل مجموعة تم تلقيها من الخلفية على الفور إلى المتصل. عند التعيين إلى true، يتم تخزين المجموعات مؤقتا (8 كيلوبايت، ما لم يتم الكشف عن نهاية الدفق) ثم يتم إرجاعها فقط إلى المتصل.

اضبط على false مع الخلفيات مثل تلك التي تنفذ الأحداث المرسلة من الخادم (SSE) التي تتطلب إرجاع المحتوى أو دفقه على الفور إلى المتصل. تعبيرات النهج غير مسموح بها.
No true
fail-on-error-status-code عند التعيين إلى ، يؤدي إلى trueتشغيل قسم عند الخطأ برموز الاستجابة في النطاق من 400 إلى 599 ضمنا. تعبيرات النهج غير مسموح بها. No false

Usage

Usage notes

  • استخدم السمة http-version لتمكين بروتوكول HTTP/2 الصادر من البوابة إلى الخلفية. تعيين السمة إلى 2or1 أو 2. حاليا، يتم دعم HTTP/2 الصادرة في البوابة المستضافة ذاتيا وفي المعاينة في بوابة v2.

    Important

    في بوابة v2، يتم دعم HTTP/2 الواردة إلى بوابة APIM والصادرة من البوابة إلى الخلفية ولكن ليس من طرف إلى طرف. حاليا، تقوم بوابة v2 بالتراجع عن اتصال HTTP/2 وارد ب HTTP/1 قبل إعادة توجيه الطلب إلى الخلفية.

Examples

إرسال طلب إلى الواجهة الخلفية HTTP/2

يقوم نهج مستوى واجهة برمجة التطبيقات التالي بإعادة توجيه جميع طلبات واجهة برمجة التطبيقات إلى خدمة خلفية HTTP/2. على سبيل المثال، استخدم هذا النهج لإعادة توجيه الطلبات من بوابة مستضافة ذاتيا إلى خلفية gRPC.

<!-- api level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <forward-request http-version="2or1"/>
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

إعادة توجيه الطلب مع الفاصل الزمني المهلة

يقوم نهج مستوى واجهة برمجة التطبيقات التالية بإعادة توجيه جميع طلبات واجهة برمجة التطبيقات إلى خدمة الواجهة الخلفية بفاصل مهلة قدره 60 ثانية.

<!-- api level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <forward-request timeout="60"/>
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

وراثة النهج من النطاق الأصل

يستخدم نهج مستوى العملية هذه العنصر base لاكتساب سياسة الواجهة الخلفية من نطاق مستوى واجهة برمجة التطبيقات الأصل.

<!-- operation level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <base/>
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

عدم توريث النهج من النطاق الأصل

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

<!-- operation level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <forward-request timeout="120" fail-on-error-status-code="true" />
        <!-- effective policy. note the absence of <base/> -->
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

عدم إعادة توجيه الطلبات إلى الخلفية

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

<!-- operation level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <!-- no forwarding to backend -->
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

لمزيد من المعلومات حول العمل مع النُهج، راجع: