Átvitelvezérlés
A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint
choose
A szabályzat használatával feltételesen alkalmazhat házirend-utasításokat a logikai kifejezések kiértékelésének eredményei alapján. Használja a szabályzatot az if-then-else vagy a kapcsoló szerkezetéhez hasonló vezérlési folyamatokhoz egy programozási nyelven.
Feljegyzés
Állítsa be a szabályzat elemeit és gyermekelemeit a szabályzatutasításban megadott sorrendben. További információ az API Management-szabályzatok beállításáról és szerkesztéséről.
Szabályzatutasítás
<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>
A choose
szabályzatnak legalább egy <when/>
elemet tartalmaznia kell. Az <otherwise/>
elem nem kötelező. Az elemek feltételeinek <when/>
kiértékelése a szabályzatban való megjelenésük sorrendjében történik. Az első <when/>
elemhez tartozó, feltételattribútummal rendelkező szabályzatutasítás true
(ok) lesznek alkalmazva. Az elemen belül <otherwise/>
található szabályzatok (ha vannak) akkor lesznek alkalmazva, ha az <when/>
elemfeltétel-attribútumok mindegyike .false
Elemek
Elem | Leírás | Kötelező |
---|---|---|
Amikor… | Egy vagy több elem, amely megadja a if szabályzatot vagy ifelse a szabályzat részeit choose . Ha több when elem van megadva, a rendszer egymás után értékeli ki őket. Ha egy condition adott elem kiértékelése true után a rendszer további feltételeket nem when értékel ki. |
Igen |
egyébként | A kiértékelendő szabályzatrészlet, ha egyik feltétel sem felel meg a when következőnek true : . |
Nem |
attribútumok esetén
Attribútum | Leírás | Kötelező |
---|---|---|
feltétel | Az a logikai kifejezés vagy logikai állandó, amelyet a rendszer kiértékel a vonatkozó szabályzatkimutatás kiértékelésekor when . |
Igen |
Használat
- Szabályzatszakaszok: bejövő, kimenő, háttérrendszer, hiba
- Szabályzathatókörök: globális, munkaterület, termék, API, művelet
- Átjárók: klasszikus, v2, használat, saját üzemeltetésű, munkaterület
Példák
Kérés és válasz módosítása a felhasználói ügynök alapján
Az alábbi példa egy halmazváltozós szabályzatot és két vezérlőfolyamat-szabályzatot mutat be.
A beállított változóházirend a bejövő szakaszban található, és létrehoz egy isMobile
logikai környezeti változót, amely igaz értékre van állítva, ha a User-Agent
kérelem fejléce tartalmazza a szöveget iPad
vagy iPhone
a .
Az első vezérlőfolyamat-szabályzat szintén a bejövő szakaszban található, és a környezeti változó értékétől függően feltételesen alkalmazza a isMobile
lekérdezési sztring paraméterházirendjeinek egyikét.
A második vezérlőfolyamat-szabályzat a kimenő szakaszban található, és feltételesen alkalmazza az XML konvertálása JSON-házirendre , ha isMobile
a beállítás értéke 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>
Válasz módosítása a terméknév alapján
Ez a példa bemutatja, hogyan végezhet tartalomszűrést úgy, hogy eltávolítja az adatelemeket a háttérszolgáltatástól a termék használatakor Starter
kapott válaszból. A példa háttérválasz az OpenWeather One Call API-hoz hasonló gyökérszintű tulajdonságokat tartalmaz.
<!-- 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>
Kapcsolódó szabályzatok
Kapcsolódó tartalom
A szabályzatok használatával kapcsolatos további információkért lásd:
- Oktatóanyag: AZ API átalakítása és védelme
- Szabályzathivatkozás a szabályzatutasságok és azok beállításainak teljes listájához
- Házirend-kifejezések
- Házirendek beállítása vagy szerkesztése
- Szabályzatkonfigurációk újrafelhasználása
- Szabályzatrészletek adattára
- Azure API Management policy toolkit
- Szabályzatok létrehozása a Microsoft Copilot használatával az Azure-ban