Flusso di controllo
SI APPLICA A: Tutti i livelli di Gestione API
Usare il choose
criterio per applicare in modo condizionale le istruzioni dei criteri in base ai risultati della valutazione delle espressioni booleane. Usare il criterio per il flusso di controllo simile a un costrutto if-then-else o switch in un linguaggio di programmazione.
Nota
Impostare gli elementi e gli elementi figlio del criterio nell'ordine specificato nell'istruzione dei criteri. Altre informazioni su come impostare o modificare i criteri di Gestione API.
Istruzione del criterio
<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>
Il choose
criterio deve contenere almeno un <when/>
elemento. L'elemento <otherwise/>
è facoltativo. Le condizioni negli elementi <when/>
vengono valutate in ordine di visualizzazione all'interno del criterio. Si applicano le istruzioni del criterio incluse all'interno del primo elemento <when/>
con attributo di condizione uguale a true
. I criteri inclusi all'interno dell'elemento <otherwise/>
, se presente, vengono applicati se tutti gli attributi di condizione dell'elemento <when/>
sono false
.
Elementi
Elemento | Descrizione | Richiesto |
---|---|---|
Quando… | Uno o più elementi che specificano le if parti o ifelse dei choose criteri. Se vengono specificati più when elementi, vengono valutati in sequenza. Una volta che la condition di un elemento when risulta true , non vengono valutate altre condizioni when . |
Sì |
otherwise | Frammento di criteri da valutare se nessuna delle when condizioni restituisce true . |
No |
quando gli attributi
Attributo | Descrizione | Richiesto |
---|---|---|
condizione | Espressione booleana o costante booleana da valutare quando viene valutata l'istruzione criteri contenitore when . |
Sì |
Utilizzo
- Sezioni del criterio: inbound, outbound, backend, on-error
- Ambiti del criterio: globale, area di lavoro, prodotto, API, operazione
- Gateway: classico, v2, consumo, self-hosted
Esempi
Modificare la richiesta e la risposta in base all'agente utente
L'esempio seguente illustra un criterio set-variable e due criteri di flusso di controllo.
Il criterio di impostazione della variabile si trova nella sezione in ingresso e crea isMobile
, una variabile di contesto booleana, che è impostata su true se l'intestazione della richiesta User-Agent
contiene il testo iPad
o iPhone
.
Il primo criterio di flusso di controllo è disponibile anche nella sezione in ingresso e applica in modo condizionale uno dei due criteri Imposta parametro di stringa della query in base al valore della variabile di contesto isMobile
.
Il secondo criterio di flusso di controllo si trova nella sezione in uscita e applica in modo condizionale il criterio Converti XML in JSON quando isMobile
è impostato su 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>
Modificare la risposta in base al nome del prodotto
Questo esempio mostra come eseguire operazioni di filtro sui contenuti rimuovendo elementi di dati dalla risposta ricevuta dal servizio back-end quando si usa il prodotto Starter
. La risposta back-end di esempio include proprietà a livello radice simili all'API 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>
Criteri correlati
Contenuto correlato
Per ulteriori informazioni sull'utilizzo dei criteri, vedere:
- Esercitazione: Trasformare e proteggere l'API
- Informazioni di riferimento sui criteri per un elenco completo delle istruzioni dei criteri e delle relative impostazioni
- Espressioni di criteri
- Impostare o modificare criteri
- Riutilizzare le configurazioni dei criteri
- Repository dei frammenti di criteri
- Creare criteri con Microsoft Copilot per Azure