Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
UYGULANANLAR: Tüm API Management katmanları
choose Boole ifadelerinin değerlendirme sonuçlarına göre ilke deyimlerini koşullu olarak uygulamak için ilkeyi kullanın. Denetim akışı için ilkeyi if-then-else veya bir programlama dilindeki anahtar yapısına benzer şekilde kullanın.
Not
İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.
İlke bildirimi
<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>
İlke choose en az bir <when/> öğe içermelidir.
<otherwise/> öğesi isteğe bağlıdır. Öğelerdeki <when/> koşullar, ilke içindeki görünümlerine göre değerlendirilir. koşul özniteliği eşittir olan ilk <when/> öğenin içine alınmış ilke deyimleri true uygulanır. Öğesi içinde <otherwise/> yer alan ilkeler varsa, tüm <when/> öğe koşulu öznitelikleri falseise uygulanır.
Öğeler
| Öğe | Açıklama | Gerekli |
|---|---|---|
| Ne zaman… | İlkenin if veya bölümlerini ifelse belirten bir veya choose daha fazla öğe. Birden çok when öğe belirtilirse, bunlar sıralı olarak değerlendirilir.
condition öğesi olarak değerlendirildiğindetrue, başka when bir koşul değerlendirilmez. |
Evet |
| yoksa | Koşulların hiçbiri when olarak değerlendirilmezse değerlendirilecek trueilke parçacığı. |
Hayır |
when öznitelikleri
| Öznitelik | Açıklama | Gerekli |
|---|---|---|
| koşul | İçeren when ilke deyimi değerlendirildiğinde değerlendirilecek Boole ifadesi veya Boole sabiti. |
Evet |
Kullanım
- İlke bölümleri: gelen, giden, arka uç, hatada
- İlke kapsamları: genel, çalışma alanı, ürün, API, işlem
- Ağ geçitleri: klasik, v2, tüketim, şirket içinde barındırılan, çalışma alanı
Örnekler
Kullanıcı aracısı temelinde istek ve yanıtı değiştirme
Aşağıdaki örnekte bir set-variable ilkesi ve iki denetim akışı ilkesi gösterilmektedir.
Değişken kümesi ilkesi gelen bölümündedir ve istek üst bilgisi veya metnini içeriyorsa true isMobile olarak ayarlanmış bir Boole User-Agent değişkeni iPadiPhoneoluşturur.
İlk denetim akışı ilkesi de gelen bölümündedir ve bağlam değişkeninin değerine bağlı olarak iki Küme sorgusu dizesi parametre ilkesinden isMobile birini koşullu olarak uygular.
İkinci denetim akışı ilkesi giden bölümündedir ve olarak ayarlandığında XML'yi JSON'a.isMobile
<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>
Yanıtı ürün adına göre değiştirme
Bu örnekte, ürünü kullanırken arka uç hizmetinden alınan yanıttan veri öğelerini kaldırarak içerik filtreleme işleminin nasıl gerçekleştirildiği gösterilmektedir Starter . Örnek arka uç yanıtı, OpenWeather One Call API'sine benzer kök düzeyinde özellikler içerir.
<!-- 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>
İlgili ilkeler
İlgili içerik
İlkelerle çalışma hakkında daha fazla bilgi için bkz:
- Öğretici: API'nizi dönüştürme ve koruma
- İlke deyimlerinin ve ayarlarının tam listesi için ilke başvurusu
- İlke ifadeleri
- İlkeleri ayarlama veya düzenleme
- İlke yapılandırmalarını yeniden kullanma
- İlke kod parçacıkları deposu
- İlke oyun alanı deposu
- Azure API Management ilke araç seti
- Politikalar oluşturmak, açıklamak ve sorun gidermek için Copilot yardımı alın