إرسال طلب
ينطبق على: جميع مستويات إدارة واجهة برمجة التطبيقات
يرسل نهج send-request
الطلب المتوفر إلى محدد موقع المعلومات المحدد، ولا ينتظر أكثر من قيمة المهلة المحددة.
إشعار
تعيين عناصر النهج والعناصر التابعة بالترتيب الوارد في بيان النهج. تعلم كيفية إعداد نُهج APIM أو تعديلها.
نهج السياسة
<send-request mode="new | copy" response-variable-name="" timeout="60 sec" ignore-error
="false | true">
<set-url>request URL</set-url>
<set-method>...</set-method>
<set-header>...</set-header>
<set-body>...</set-body>
<authentication-certificate thumbprint="thumbprint" />
<proxy>...</proxy>
</send-request>
سمات
السمة | الوصف | مطلوبة | افتراضي |
---|---|---|---|
الوضع | تحديد ما إذا كان هذا new طلبا أو أحد copy العناوين والنص الأساسي في الطلب الحالي. في قسم النهج الصادر، mode=copy لا يقوم بتهيئة نص الطلب. يتم السماح بتعبيرات النهج. |
لا | new |
اسم متغير الاستجابة | اسم متغير السياق الذي سيتلقى كائن استجابة. إذا لم يكن المتغير موجوداً، فسيتم إنشاؤه عند التنفيذ الناجح للسياسة وسيصبح متاحاً للوصول عبر المجموعة context.Variable . يتم السماح بتعبيرات النهج. |
نعم | غير متوفر |
المهلة | الفاصل الزمني المهلة بالثواني قبل فشل الاستدعاء إلى عنوان URL. يتم السماح بتعبيرات النهج. | لا | 60 |
تجاهل الخطأ | إذا ونتج true عن الطلب خطأ، تجاهل الخطأ، وسيحتوي متغير الاستجابة على قيمة خالية. تعبيرات النهج غير مسموح بها. |
لا | false |
عناصر
العنصر | الوصف | مطلوب |
---|---|---|
set-url | عنوان URL للطلب. يتم السماح بتعبيرات النهج. | لا إذا كان mode=copy ؛ وإلا نعم. |
أسلوب التعيين | تعيين أسلوب الطلب. تعبيرات النهج غير مسموح بها. | لا إذا كان mode=copy ؛ وإلا نعم. |
تعيين العنوان | تعيين رأس في الطلب. استخدم عناصر متعددة set-header لرؤوس طلبات متعددة. |
لا |
تعيين النص الأساسي | تعيين نص الطلب. | لا |
شهادة المصادقة |
الشهادة المراد استخدامها لمصادقة العميل، المحددة في سمة thumbprint . |
لا |
الوكيل | طلب التوجيه عبر وكيل HTTP. | لا |
الاستخدام
- أقسام النهج: واردة وصادرة وخلفية وعند الخطأ
- نطاقات النهج: العمومية، ومساحة العمل، والمنتج، وواجهة برمجة التطبيقات، والتشغيل
- البوابات: مخصصة واستهلاكية ومستضافة ذاتيا ومساحة عمل
ملاحظات الاستخدام
إذا تم نشر مثيل APIM (إدخاله) في VNet في الوضع الداخلي وكنت تستخدم هذا النهج لإرسال طلب واجهة برمجة تطبيقات إلى واجهة برمجة تطبيقات يتم كشفها في نفس مثيل APIM، فقد تواجه مهلة مع خطأ HTTP 500 BackendConnectionFailure. هذه هي نتيجة قيود موازن تحميل Azure.
لربط طلبات واجهة برمجة التطبيقات بالبوابة في هذا السيناريو، قم بتكوين set-url
لاستخدام عنوان URL https://127.0.0.1
لرد الحلقة localhost . بالإضافة إلى ذلك، قم بتعيين HOST
العنوان لتحديد مضيف بوابة مثيل APIM هذا. يمكنك استخدام مضيف المجال الافتراضي azure-api.net
أو المخصص. على سبيل المثال:
<send-request>
<set-url>https://127.0.0.1/myapi/myoperation</set-url>
<set-header name="Host">
<value>myapim.azure-api.net</value>
</set-header>
</send-request>
راجع منشور المدونة هذا للحصول على مزيد من المعلومات.
مثال
يوضح هذا المثال طريقة واحدة للتحقق من رمز مرجعي باستخدام خادم تفويض. لمزيد من المعلومات حول هذا النموذج، راجع استخدام الخدمات الخارجية من خدمة Azure API Management.
<inbound>
<!-- Extract token from Authorization header parameter -->
<set-variable name="token" value="@(context.Request.Headers.GetValueOrDefault("Authorization","scheme param").Split(' ').Last())" />
<!-- Send request to Token Server to validate token (see RFC 7662) -->
<send-request mode="new" response-variable-name="tokenstate" timeout="20" ignore-error="true">
<set-url>https://microsoft-apiappec990ad4c76641c6aea22f566efc5a4e.azurewebsites.net/introspection</set-url>
<set-method>POST</set-method>
<set-header name="Authorization" exists-action="override">
<value>basic dXNlcm5hbWU6cGFzc3dvcmQ=</value>
</set-header>
<set-header name="Content-Type" exists-action="override">
<value>application/x-www-form-urlencoded</value>
</set-header>
<set-body>@($"token={(string)context.Variables["token"]}")</set-body>
</send-request>
<choose>
<!-- Check active property in response -->
<when condition="@((bool)((IResponse)context.Variables["tokenstate"]).Body.As<JObject>()["active"] == false)">
<!-- Return 401 Unauthorized with http-problem payload -->
<return-response>
<set-status code="401" reason="Unauthorized" />
<set-header name="WWW-Authenticate" exists-action="override">
<value>Bearer error="invalid_token"</value>
</set-header>
</return-response>
</when>
</choose>
<base />
</inbound>
النهج ذات الصلة
المحتوى ذو الصلة
لمزيد من المعلومات حول العمل مع النُهج، راجع:
- البرنامج التعليمي: تحويل واجهة برمجة التطبيقات الخاصة بك وحمايتها
- Policy reference لقائمة كاملة من بيانات النُهج وإعداداتها
- تعبيرات النهج
- تعيين النهج أو تحريرها
- إعادة استخدام التكوينات الخاصة بالنهج
- مستودع القصاصات البرمجية للنهج
- مجموعة أدوات نهج إدارة واجهة برمجة تطبيقات Azure
- نهج المؤلف باستخدام Microsoft Copilot في Azure