Cette page s'applique à Apigee et à Apigee hybrid.
Consultez la documentation d' Apigee Edge.
Dans un flux conditionnel, les règles ne sont exécutées que si la condition du flux renvoie true
(par opposition aux règles associées aux flux PreFlow ou PostFlow, qui sont toujours exécutés). Cette section explique comment créer un flux conditionnel.
À propos des flux conditionnels
Lors du traitement d'une requête et d'une réponse, un seul flux conditionnel est exécuté par segment : le premier flux dont la condition renvoie la valeur true
.
Les exemples suivants illustrent certaines manières d'utiliser des flux conditionnels.
Exemple 1
La définition ProxyEndpoint suivante affiche un flux conditionnel qui est exécuté par le ProxyEndpoint sur toutes les requêtes HTTP GET
envoyées au proxy d'API :
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>request.verb="GET"</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
Notez que la condition fait référence à la request.verb
variable de flux. Une variable de flux est une référence nommée qui contient les informations d'état associées à une transaction d'API traitée par Apigee. Apigee définit de nombreuses variables d'état que vous pouvez référencer.
Exemple 2
Si votre backend de service fournit des rapports et des prévisions météorologiques, votre API peut définir deux flux conditionnels mappés à ces ressources d'API : /reports
et /forecasts
. Lorsqu'un appel d'API inclut l'une de ces ressources dans l'URL, la condition est évaluée à true et la logique associée au flux conditionnel est exécutée.
Les développeurs d'applications accèdent ensuite à vos ressources en envoyant des requêtes à une URL au format suivant :
http://myAPIs.myCo.com/weather/reports
ou :
http://myAPIs.myCo.com/weather/forecasts
Dans un proxy d'API, vous pouvez définir un flux conditionnel correspondant à une ressource spécifique :
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition> <Request/> <Response/> </Flow> <Flow name="Flow-2"> <Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
Dans cet exemple, vous référencez la variable de flux proxy.pathsuffix
, qui contient le suffixe de l'URL utilisé pour accéder au proxy d'API. Vous pouvez ensuite associer différentes règles au flux conditionnel pour chaque ressource.
Exemple : Créer un flux conditionnel
L'exemple suivant :
- Crée un flux conditionnel qui ne s'exécute que lorsque le message de la requête est une requête HTTP
GET
. - Ajoute une règle au nouveau flux.
Ajouter un flux conditionnel
Nouvel éditeur de proxys
Pour ajouter un flux conditionnel, procédez comme suit :
- Sélectionnez l'onglet Développer dans l'éditeur de proxy.
- Sélectionnez Points de terminaison du proxy > Par défaut dans le volet de gauche.
Remarque : Vous devrez peut-être développer l'éditeur visuel dans le volet de droite pour afficher tous les éléments. Pour ce faire, cliquez sur le séparateur et faites-le glisser entre l'éditeur visuel et l'éditeur de texte.
- Cliquez sur le bouton + au-dessus du volet Response (Réponse).
- Dans la boîte de dialogue Add conditional flow (Ajouter un flux conditionnel), sélectionnez Path et Verb (Chemin d'accès et verbe), puis saisissez dans le champ Path le suffixe de chemin d'accès qui doit se trouver dans le chemin de la requête pour que le flux conditionnel s'exécute. Voir l'exemple 2 ci-dessus
Le flux conditionnel ne s'exécute que si la requête est une requête
GET
(mais pas pourPUT
,POST
, etc.).Le nouveau flux, intitulé
Flow-1
, apparaît désormais dans le volet Point de terminaison du proxy. Le code XML du nouveau flux conditionnel s'affiche dans l'éditeur de texte.
Vous pouvez modifier l'élément Condition si vous le souhaitez. Consultez la section Ajouter une logique aux flux.
Associer une règle au flux
Maintenant que vous avez créé le flux conditionnel, vous pouvez lui associer une règle. L'exemple suivant ajoute une règle de quota, qui limite le nombre de messages de requête au flux autorisés par un proxy d'API sur une période donnée :
- Dans le volet de gauche, cliquez sur le bouton + à droite de Policies (Règles).
- Dans la boîte de dialogue Create policy (Créer une règle), cliquez dans le champ Select policy type (Sélectionner un type de règle) et faites défiler la page jusqu'à Traffic Management (Gestion du trafic), puis sélectionnez Quota.
- Cliquez sur Create (Créer) pour créer la règle.
- Cliquez sur le bouton + à côté de Flow-1 dans le volet Request (Requête).
- Dans la boîte de dialogue Add policy step (Ajouter une étape de règle), cliquez dans le champ Select existing policy (Sélectionner une règle existante), puis sélectionnez Quota-1.
- Cliquez sur Ajouter.
Le volet Request (Requête) affiche désormais le flux et la règle associée, Quota-1.
L'éditeur de texte affiche maintenant une étape contenant la règle Quota-1 dans l'élément Flow-1 du fichier XML :
Avec cette configuration, la règle de quota sera appliquée aux requêtes GET
.
Les requêtes d'autres types ne contribuent pas au nombre maximal de requêtes dans la règle de quota.
Éditeur de proxy classique
Pour ajouter un flux conditionnel, sélectionnez l'onglet Develop (Développer) dans le compilateur de proxy d'API.
Cliquez sur dans le point de terminaison souhaité.
Le formulaire New Conditional Flow vous permet de nommer le flux et de configurer une condition. Dans l'exemple suivant, vous ajoutez une condition simple qui évalue la syntaxe HTTP du message de requête pour le verbe GET
(par opposition à PUT
, POST
, etc.) d'un URI suivant le chemin d'accès de base.
(Découvrez comment créer des instructions conditionnelles dans la section Conditions avec variables de flux.)
Le nouveau flux, intitulé Flow-1
, apparaît désormais dans le menu "Navigator" (Navigateur).
Observez maintenant la configuration XML de Proxy Endpoints. Sélectionnez Flow-1 dans le menu Navigator.
La configuration suivante s'affiche.
<PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Request/> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition> </Flow> </Flows> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow>
Une fois que vous avez créé un flux conditionnel, celui-ci peut être utilisé pour joindre une stratégie. Une fois le flux sélectionné, cliquez sur l'icône + Étape dans le schéma de requête ou de réponse pour ajouter une stratégie nouvelle ou existante au flux.
En associant la règle au flux sélectionné, vous configurez le proxy d'API de manière à n'appliquer la règle de quota que pour les requêtes adressées à cette combinaison d'URI et de verbe pour le flux. Par exemple, si vous associez la stratégie au flux learn dans la requête, le fichier XML suivant est généré dans l'éditeur de texte :
<ProxyEndpoint name="default"> ... <Flow name="issue"> <Description/> <Request> <Step> <Name>Quota-2</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition> </Flow> ... </ProxyEndpoint>
Dans cette configuration, si une requête GET
arrive sur le proxy d'API avec un format d'URI .../issue/** (/issue/ avec tout ce qui figure dans l'URI après la dernière barre oblique), le quota est appliqué à cet appel d'API.
Étapes suivantes
Les rubriques suivantes fournissent des informations supplémentaires sur la construction des conditions et l'utilisation de variables :