Flux de contrôle
S’APPLIQUE À : tous les niveaux de Gestion des API
Utilisez la stratégie choose
pour appliquer de manière conditionnelle les instructions des stratégies en fonction des résultats de l’évaluation des expressions booléennes. Utilisez la stratégie pour le flux de contrôle de la même manière qu’une construction if-then-else ou une construction de commutateur dans un langage de programmation.
Notes
Définissez les éléments enfants et de stratégie dans l’ordre fourni dans l’instruction de stratégie. En savoir plus sur comment définir ou modifier des stratégies du service Gestion des API.
Instruction de la stratégie
<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>
La stratégie choose
doit contenir au moins un élément <when/>
. L’élément <otherwise/>
est facultatif. Les conditions dans les éléments <when/>
sont évaluées par ordre d’apparition dans la stratégie. La ou les déclarations de stratégie incluses dans le premier élément <when/>
avec attribut de condition égal à true
seront appliquées. Les stratégies incluses dans l’élément <otherwise/>
, le cas échéant, seront appliquées si tous les attributs de condition de l’élément <when/>
sont false
.
Éléments
Élément | Description | Obligatoire |
---|---|---|
when | Un ou plusieurs éléments spécifiant les parties if ou ifelse de la stratégie choose . Si plusieurs éléments when sont spécifiés, ils sont évalués séquentiellement. Une fois la condition d’un élément when évaluée à true , aucune autre condition when n’est évaluée. |
Oui |
otherwise | Extrait de stratégie à évaluer si aucune des conditions when ne correspond à true . |
Non |
Attributs when
Attribut | Description | Obligatoire |
---|---|---|
condition | Expression booléenne ou constante booléenne à évaluer quand la déclaration de stratégie when qui la contient est évaluée. |
Oui |
Usage
- Sections de la stratégie : inbound, outbound, backend, on-error
- Étendues de la stratégie : global, espace de travail, produit, API, opération
- Passerelles : classiques, v2, consommation, auto-hébergées, espace de travail
Exemples
Modifier la demande et la réponse en fonction de l’agent utilisateur
L'exemple suivant présente une stratégie set-variable et deux stratégies de flux de contrôle.
La stratégie set variable se trouve dans la section inbound et crée une variable de isMobile
isMobile
booléenne qui a la valeur true si l’en-tête de demande User-Agent
contient le texte iPad
ou iPhone
.
La première stratégie de flux de contrôle se trouve également dans la section inbound et applique de manière conditionnelle une des deux stratégies Set query string parameter selon la valeur de la variable de contexte isMobile
.
La deuxième stratégie de flux de contrôle se trouve dans la section outbound et applique de manière conditionnelle la stratégie Convert XML to JSON si isMobile
a la valeur 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>
Modifier la réponse en fonction du nom du produit
Cet exemple montre comment effectuer un filtrage du contenu en supprimant des éléments de données de la réponse reçue du service principal en cas d’utilisation du produit Starter
. L’exemple de réponse back-end comprend des propriétés de niveau racine similaires à l’API d’appel OpenWeather One.
<!-- 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>
Stratégies connexes
Contenu connexe
Pour plus d’informations sur l’utilisation des stratégies, consultez :
- Tutoriel : Transformer et protéger votre API
- Référence de stratégie pour obtenir la liste complète des instructions et des paramètres de stratégie
- Expressions de stratégie
- Définir ou modifier des stratégies
- Réutilisation de configurations de stratégie
- Référentiel d’extrait de stratégie
- Créer des stratégies à l’aide de Microsoft Copilot dans Azure