Configurer des flux

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Les flux sont les composants de base des proxys d'API. Les flux vous permettent de programmer le comportement d'une API en vous permettant de configurer la séquence dans laquelle les stratégies et le code sont exécutés par un proxy d'API.

Pour obtenir une présentation conceptuelle des flux, consultez la page Contrôler l'exécution d'un proxy avec des flux.

Cet article explique comment créer des flux conditionnels et ajouter une logique (règles) aux flux de manière générale. La création de conditions implique plus de détails que ce qui est abordé dans cet article. Pour plus d'informations, consultez les pages Présentation des variables de flux et Conditions avec variables de flux.

Associer des stratégies aux flux

Edge propose de nombreux types de règles prédéfinies pour implémenter la sécurité, gérer le trafic et la manipulation des messages. En outre, les stratégies vous permettent d'ajouter votre propre code personnalisé pour personnaliser entièrement le traitement des messages.

Exemple :

  • Associez une règle de sécurité OAuth au flux PreFlow de la requête du ProxyEndpoint. Étant donné que le niveau PreFlow de la requête du point de terminaison du proxy est le premier flux du pipeline, vous pouvez immédiatement rejeter une requête si elle ne respecte pas vos règles de sécurité.
  • Associez une règle de conversion JSON en XML au flux PostFlow de la réponse du TargetEndpoint pour convertir une réponse JSON au format XML.
  • Associez une règle JavaScript à un flux conditionnel du ProxyEndpoint pour exécuter le code JavaScript permettant de traiter la requête.

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 &quot;Navigator&quot; (Navigateur), un exemple de flux conditionnel nommé &quot;issue&quot; est mis en surbrillance, et le bouton &quot;Step&quot; (Étape) est disponible dans le volet &quot;Flow&quot; (Flux).

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

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 règle au flux learn dans la requête, le code XML suivant est généré dans la vue Code de l'éditeur de proxy :

<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 demande GET arrive sur le proxy d'API avec un URI format de .../issue/** (/issue/ avec n'importe quel élément dans l'URI après le dernier transfert (barre oblique), un quota est appliqué à cet appel d'API.

À propos des flux conditionnels

Toutes les règles associées aux flux PreFlow ou PostFlow sont toujours exécutées. Toutefois, les règles d'un flux conditionnel ne sont exécutées que si la condition du flux renvoie la valeur "true".

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". Cela signifie que vous pouvez exécuter un flux conditionnel dans chacun des éléments suivants :

  • Pipeline de requête de ProxyEndpoint
  • Pipeline de requête de TargetEndpoint
  • Pipeline de réponse de ProxyEndpoint
  • Pipeline de réponse de TargetEndpoint

Vidéo : regardez une courte vidéo pour en savoir plus sur les flux conditionnels.

Par exemple, 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 au flux request.verb . . Une variable de flux est une référence nommée qui contient les informations d'état associées avec une transaction d'API traitée par Edge. Edge définit de nombreuses variables d'état que vous pouvez référence.

Les services RESTful sont des collections de ressources d'API. Une ressource d'API est un fragment de chemin d'URI qui identifie une entité à laquelle les développeurs peuvent accéder en appelant votre API. Par exemple, 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.

Ajouter un flux conditionnel

Dans cet exemple, vous configurez un flux qui ne s'exécute que lorsque le message de la requête est une requête HTTP GET.

Pour ajouter un flux conditionnel, sélectionnez l'onglet Develop (Développer) dans le compilateur de proxy d'API.

Onglet &quot;Develop&quot; (Développer) du compilateur de proxy

Cliquez sur l'icône + dans le point de terminaison souhaité.

Bouton permettant d&#39;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 &quot;New Conditional Flow&quot;, le flux est nommé &quot;Flow-1&quot;, et le type de condition, le chemin et le verbe sont configurés.

(Découvrez comment créer des instructions conditionnelles dans la page Conditions avec variables de flux.)

Le nouveau flux, appelé Flow-1, apparaît maintenant dans le menu Navigateur.

Flux &quot;Flow-1&quot; 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>

Étapes suivantes

Les rubriques suivantes fournissent des informations supplémentaires sur la construction des conditions et l'utilisation de variables :