Á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 trueutá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

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 iPhonea .

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>

A szabályzatok használatával kapcsolatos további információkért lásd: