Flux conditionnels

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 :

  1. Sélectionnez l'onglet Développer dans l'éditeur de proxy.
  2. Sélectionnez Points de terminaison du proxy > Par défaut dans le volet de gauche.

    Par défaut dans le volet de gauche." class="l10n-absolute-url-src screenshot" l10n-attrs-original-order="class,width,alt,src" src="https://cloud.google.com/static/apigee/docs/api-platform/fundamentals/images/proxy-endpoints-default.png" width="35%" />

    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.

  3. Cliquez sur le bouton + au-dessus du volet Response (Réponse).

    Bouton permettant d'ajouter un flux conditionnel

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

    Bouton permettant d'ajouter un flux conditionnel

    Le flux conditionnel ne s'exécute que si la requête est une requête GET (mais pas pour PUT, POST, etc.).

    Le nouveau flux, intitulé Flow-1, apparaît désormais dans le volet Point de terminaison du proxy.

    Flux conditionnel affiché dans les points de terminaison du proxy

  5. Le code XML du nouveau flux conditionnel s'affiche dans l'éditeur de texte.

    Flux conditionnel affiché dans les points de terminaison du proxy

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 :

  1. Dans le volet de gauche, cliquez sur le bouton + à droite de Policies (Règles).
  2. 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.
  3. Cliquez sur Create (Créer) pour créer la règle.
  4. Cliquez sur le bouton + à côté de Flow-1 dans le volet Request (Requête).

    Cliquez sur le bouton Plus à côté de Flow-1 dans le volet "Request" (Requête)

  5. 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.
  6. Cliquez sur Ajouter.

Le volet Request (Requête) affiche désormais le flux et la règle associée, Quota-1.

Volet de requêtes affichant le nouveau flux et la nouvelle règle de quota

L'éditeur de texte affiche maintenant une étape contenant la règle Quota-1 dans l'élément Flow-1 du fichier XML :

Règles conditionnelles de flux et de quotas affichées au format 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.

Onglet "Develop" (Développer) du compilateur de proxy

Cliquez sur dans le point de terminaison souhaité.

Bouton permettant d'ajouter un flux conditionnel

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.

Dans le volet "New Conditional Flow", le flux est nommé "Flow-1", et le type de condition, le chemin et le verbe sont configurés.

(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).

Flux "Flow-1" en surbrillance

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.

Dans le menu "Navigator" (Navigateur), un exemple de flux conditionnel nommé "issue" est mis en surbrillance, et le bouton "Step" (Étape) est disponible dans le volet "Flow" (Flux).

Dans le volet "Add Step" (Ajouter une étape), une instance de règle est créée avec le type de règle "Quota" et le nom à afficher "Quota-2".

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 :