Denetim akışı
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 false
ise uygulanır.
Öğeler
Öğe | Açıklama | Gerekli |
---|---|---|
Ne zaman… | İlkenin if veya bölümlerini choose belirten bir veya ifelse 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. |
Yes |
yoksa | Koşulların hiçbiri when olarak değerlendirilmezse değerlendirilecek true ilke 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. |
Yes |
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 User-Agent
olarak ayarlanmış bir isMobile
Boole bağlam değişkeni iPad
iPhone
oluş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 Dönüştür ilkesini isMobile
koşullu olarak uygular.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>
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: