تدفق التحكم
ينطبق على: جميع مستويات إدارة واجهة برمجة التطبيقات
استخدم النهج choose
لتطبيق عبارات النهج بشكل مشروط استنادا إلى نتائج تقييم التعبيرات المنطقية. استخدم النهج لتدفق التحكم المشابه ل if-then-else أو إنشاء مفتاح في لغة برمجة.
إشعار
تعيين عناصر النهج والعناصر التابعة بالترتيب الوارد في بيان النهج. تعلم كيفية إعداد نُهج APIM أو تعديلها.
نهج السياسة
<choose>
<when condition="Boolean expression | Boolean constant">
<!— one or more policy statements to be applied if the above condition is true -->
</when>
<when condition="Boolean expression | Boolean constant">
<!— one or more policy statements to be applied if the above condition is true -->
</when>
<otherwise>
<!— one or more policy statements to be applied if none of the above conditions are true -->
</otherwise>
</choose>
يجب أن يحتوي النهج choose
على عنصر واحد <when/>
على الأقل. <otherwise/>
العنصر اختياري. يتم تقييم الظروف في العناصر <when/>
من حيث مظهرها ضمن النَهج. سيتم تطبيق بيان (عبارات) النهج المغلق داخل عنصر <when/>
الأول مع سمة الشرط يساوي true
. سيتم تطبيق النهج المضمنة في عنصر <otherwise/>
، إن وجدت، إذا كانت جميع <when/>
سمات شرط العنصر هي false
.
عناصر
العنصر | الوصف | مطلوب |
---|---|---|
عند | عنصر واحد أو أكثر يحدد أو if ifelse أجزاء من النهج choose . إذا تم تحديد عناصر متعددة when ، يتم تقييمها بشكل تسلسلي. بمجرد condition تقييم عنصر عند true ، لا when يتم تقييم أي شروط أخرى. |
نعم |
خلاف ذلك | قصاصة النهج المراد تقييمها إذا لم يتم تقييم أي من when الشروط إلى true . |
لا |
عندما تكون السمات
السمة | الوصف | مطلوب |
---|---|---|
condition | التعبير المنطقي أو الثابت المنطقي الذي سيتم تقييمه عند تقييم عبارة النهج التي when تحتوي عليها. |
نعم |
الاستخدام
- أقسام النهج: واردة وصادرة وخلفية وعند الخطأ
- نطاقات النهج: العمومية، ومساحة العمل، والمنتج، وواجهة برمجة التطبيقات، والتشغيل
- البوابات: الكلاسيكية، الإصدار 2، الاستهلاك، المستضافة ذاتيا، مساحة العمل
الأمثلة
تعديل الطلب والاستجابة استنادا إلى عامل المستخدم
يوضح المثال التالي نهج متغير مجموعة واثنين من نهج تدفق عنصر التحكم.
يوجد نهج المتغير المحدد في القسم الوارد ويقوم بإنشاء متغير isMobile
سياق منطقي يتم تعيينه على "صحيح" إذا كان User-Agent
عنوان الطلب يحتوي على النص iPad
أو iPhone
.
يوجد نهج تدفق عنصر التحكم الأولى أيضاً في القسم الوارد، وتطبق شرطياً أحد نهجي تعيين معلمة سلسلة الاستعلام بناءً على قيمة متغير السياق isMobile
.
يوجد نهج تدفق عناصر التحكم الثانية في القسم الصادر ويطبق نهج تحويل XML إلى JSON بشكل مشروط عند تعيين isMobile
على true
.
<policies>
<inbound>
<set-variable name="isMobile" value="@(context.Request.Headers.GetValueOrDefault("User-Agent","").Contains("iPad") || context.Request.Headers.GetValueOrDefault("User-Agent","").Contains("iPhone"))" />
<base />
<choose>
<when condition="@(context.Variables.GetValueOrDefault<bool>("isMobile"))">
<set-query-parameter name="mobile" exists-action="override">
<value>true</value>
</set-query-parameter>
</when>
<otherwise>
<set-query-parameter name="mobile" exists-action="override">
<value>false</value>
</set-query-parameter>
</otherwise>
</choose>
</inbound>
<outbound>
<base />
<choose>
<when condition="@(context.Variables.GetValueOrDefault<bool>("isMobile"))">
<xml-to-json kind="direct" apply="always" consider-accept-header="false"/>
</when>
</choose>
</outbound>
</policies>
تعديل الاستجابة استنادا إلى اسم المنتج
يوضح هذا المثال كيفية إجراء عامل التصفية المحتوى عن طريق إزالة عناصر البيانات من الاستجابة المتلقاة من خدمة في الخلفية عند استخدام منتج Starter
. يتضمن مثال استجابة الواجهة الخلفية خصائص على مستوى الجذر مشابهة لواجهة برمجة تطبيقات مكالمة النظام الأساسي لـ OpenWeather One Call.
<!-- Copy this snippet into the outbound section to remove a number of data elements from the response received from the backend service based on the name of the product -->
<choose>
<when condition="@(context.Response.StatusCode == 200 && context.Product.Name.Equals("Starter"))">
<set-body>@{
var response = context.Response.Body.As<JObject>();
foreach (var key in new [] {"current", "minutely", "hourly", "daily", "alerts"}) {
response.Property (key).Remove ();
}
return response.ToString();
}
</set-body>
</when>
</choose>
النهج ذات الصلة
المحتوى ذو الصلة
لمزيد من المعلومات حول العمل مع النُهج، راجع: