Comprendre les routes

Cette page s'applique à Apigee et à Apigee hybrid.

Consultez la documentation d'Apigee Edge.

Une route détermine le chemin d'une requête entre le ProxyEndpoint et le TargetEndpoint. La route comprend l'URL utilisée pour accéder au ProxyEndpoint d'API et à l'URL du service de backend défini par le TargetEndpoint.

Regardez cette vidéo d'introduction aux routes, décrivant la relation entre ProxyEndpoint et TargetEndpoint.

Déterminer l'URL du point de terminaison proxy d'API

L'image suivante montre une requête entrant dans le ProxyEndpoint depuis une application et cette requête dirigée vers le service de backend :

Une requête de client HTTP passe via un proxy d'API sur Apigee jusqu'au service HTTP, puis la réponse est transmise au client via le proxy d'API.

Une fois que vous avez créé un proxy d'API sur Apigee, l'URL par défaut qu'une application utilise pour accéder au proxy a la forme suivante :

https://www.example.com/shopping/cart/addItem
        |_____________| |___________| |_____|
               |             |           |
            hostname      basepath     resource

Où :

  • Le nom d'hôte est un domaine que vous avez ajouté au DNS ou une adresse IP.
  • Le chemin de base et le chemin d'accès à la ressource sont définis lorsque vous créez le proxy d'API.

Lorsqu'une requête arrive à Apigee, Apigee analyse l'URL pour diriger la requête vers le ProxyEndpoint approprié. Par exemple, l'URL suivante est utilisée pour accéder à un proxy d'API :

http://example.com/v1/weather/forecastrss

Si vous examinez la définition du ProxyEndpoint du proxy d'API dans la figure ci-dessus, vous pouvez observer comment cette URL est analysée :

  1. La partie domaine de l'URL, http://example.com, correspond à un nom d'hôte défini sur un groupe d'environnements. Le proxy a été déployé sur un ou plusieurs environnements de ce groupe d'environnements. Pour en savoir plus, consultez la section À propos des environnements et des groupes d'environnements.
  2. La deuxième partie de l'URL, /v1/weather, est déterminée par l'élément <BasePath> du ProxyEndpoint. Vous avez défini le chemin de base lors de la création du proxy. Le chemin de base doit être unique au proxy d'API pour l'environnement, de sorte que deux proxys d'API dans le même environnement ne possèdent pas le même chemin de base.
  3. La troisième partie de l'URL, /forecastrss, est une ressource définie par le proxy d'API avec le flux conditionnel correspondant défini par l'élément <Flows>.

Vidéo : Regardez une courte vidéo pour en savoir plus sur les points de terminaison proxy d'API.

Déterminer l'URL du point de terminaison cible

L'élément <RouteRule> d'une définition de ProxyEndpoint détermine la cible du proxy d'API et est évalué une fois que toutes les règles des flux PreFlow, Conditional et PostFlow de la requête ProxyEndpoint sont traitées.

Un ProxyEndpoint peut définir la cible comme suit :

  • Une URL directe vers un service de backend.
  • Une seule définition TargetEndpoint.
  • Plusieurs TargetEndpoint où le proxy d'API délègue la requête à un point de terminaison cible en fonction d'une condition.
  • Route nulle ou cible, ce qui signifie que la requête n'est pas transmise à une cible. Au lieu de cela, le traitement de la requête et la génération de la réponse s'effectuent sur Apigee.

Vidéo : Regardez une courte vidéo pour en savoir plus sur les points de terminaison cibles.

URL directe

Un ProxyEndpoint peut appeler directement un service de backend, en contournant toute configuration TargetEndpoint nommée. Par exemple, la règle <RouteRule> suivante envoie toujours un appel HTTP à http://example.com/myAPI:.

<RouteRule name="default">
  <URL>http://example.com/myAPI</URL>
</RouteRule>

Toutefois, comme il n'existe pas de TargetEndpoint, vous ne pouvez ajouter de règles qu'aux flux définis par le ProxyEndpoint.

Cible unique

Dans une définition de cible unique, le ProxyEndpoint fait référence à une seule définition de TargetEndpoint par nom, comme illustré dans la figure ci-dessus :

<RouteRule name="default">
  <TargetEndpoint>default</TargetEndpoint>
</RouteRule>

Toutes les requêtes adressées à ce proxy d'API sont dirigées vers la même définition de TargetEndpoint. Le tag <URL> dans le TargetEndpoint détermine l'emplacement du service de backend. Dans la figure ci-dessus, l'URL cible est http://weather.yahooapis.com.

Cibles conditionnelles

Le tag <RouteRule> vous permet de diriger une requête vers une cible en fonction d'une condition. Vous pouvez utiliser des variables de flux, des paramètres de requête, des en-têtes HTTP, le contenu du message ou des informations contextuelles telles que l'heure de la journée et le lieu, pour déterminer le point de terminaison cible. Par exemple, vous pouvez inclure dans une URL de requête une zone géographique telle que les États-Unis ou le Royaume-Uni. Vous pouvez ensuite acheminer une requête vers un point de terminaison cible en fonction de la région.

La règle de routage suivante évalue un en-tête HTTP dans une requête. Si l'en-tête HTTP routeTo comporte la valeur TargetEndpoint1, la requête est transmise au TargetEndpoint nommé TargetEndpoint1. Si ce n'est pas le cas, la requête est transmise à TargetEndpoint2.

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
  <TargetEndpoint>TargetEndpoint2</TargetEndpoint>
</RouteRule>

Si vous avez plusieurs règles de routage, créez-en une servant de valeur par défaut, c'est-à-dire sans condition. Assurez-vous que la règle de routage par défaut est définie en dernier dans la liste des routes conditionnelles, car les règles sont évaluées de haut en bas dans le ProxyEndpoint.

Consultez également les pages Routes conditionnelles et Documentation de référence sur les conditions.

Vidéo : Regardez une courte vidéo pour apprendre à acheminer vers un point de terminaison cible à l'aide de cibles conditionnelles.

Route nulle

Une route nulle est compatible avec les scénarios dans lesquels le message de requête n'a pas besoin d'être transmis à un TargetEndpoint. Cela s'avère utile lorsque le ProxyEndpoint effectue tous les traitements nécessaires, par exemple en utilisant JavaScript pour appeler un service externe.

L'exemple suivant définit une route nulle :

<RouteRule name="GoNowhere"/>

En savoir plus