Comprendre les routes

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

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

Cette vidéo présente les routes, décrivant la relation entre le point de terminaison proxy et le point de terminaison cible.

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

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

Après avoir créé un proxy d'API sur Edge, l'URL par défaut utilisée par une application pour accéder au proxy se présente sous la forme suivante:

http://{org-name}-{env-name}.apigee.net/{base-path}/{resource-path}

https://{org-name}-{env-name}.apigee.net/{base-path}/{resource-path}

où :

  • {org-name} est le nom de votre organisation. Ce nom est créé lorsque vous créez un compte sur Edge.
  • {env-name} est le nom de l'environnement Edge. Par défaut, toutes les organisations Apigee créées dans le cloud sont provisionnées avec deux environnements : test et prod. Lorsque vous déployez un proxy d'API, vous pouvez choisir de le déployer dans l'un des environnements ou dans les deux.
  • {base-path} et {resource-path} sont définis lorsque vous créez le proxy d'API.

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

http://myOrg-prod.apigee.net/v1/weather/forecastrss

Si vous examinez la définition ProxyEndpoint pour le proxy d'API dans la figure ci-dessus, vous pouvez voir comment cette URL est analysée par Edge:

  1. La partie domaine de l'URL, http://myOrg-prod.apigee.net, correspond à un hôte virtuel sur Edge. Dans la définition ProxyEndpoint ci-dessus, le proxy d'API utilise le tag <VirtualHost> pour référencer un hôte virtuel nommé default. Vous pouvez définir plusieurs hôtes virtuels dans votre environnement.

    Un hôte virtuel définit les domaines et les ports sur lesquels un proxy d'API est exposé. Un hôte virtuel définit également si l'accès au proxy d'API est effectué à l'aide du protocole HTTP ou du protocole HTTPS chiffré. Pour plus d'informations sur les hôtes virtuels, consultez À propos des hôtes virtuels (bêta).
  2. La deuxième partie de l'URL, /v1/weather, est déterminée par l'élément <BasePath> dans le point de terminaison proxy. Le chemin de base doit être unique au proxy d'API de l'environnement, de sorte que deux proxys d'API n'aient 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 le tag <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

Le tag <RouteRule> d'une définition de point de terminaison proxy 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 de point de terminaison proxy sont traitées.

Un point de terminaison proxy peut définir la cible comme suit :

  • Une URL directe vers un service de backend.
  • Définition de point de terminaison cible unique.
  • Plusieurs points de terminaison cibles 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, tout le traitement de la requête et la génération de la réponse ont lieu sur Edge.

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

URL directe

Un point de terminaison proxy peut appeler directement un service de backend et contourner toute configuration de point de terminaison cible nommée. Par exemple, l'élément <RouteRule> suivant effectue toujours un appel HTTP à http://api.mycompany.com/myAPI :

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

Toutefois, comme il n'existe pas de point de terminaison cible, vous ne pouvez ajouter de règles qu'aux flux définis par point de terminaison proxy.

Cible unique

Dans une définition de cible unique, le point de terminaison proxy fait référence à une seule définition de point de terminaison cible 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 point de terminaison cible. Le tag <URL> du point de terminaison cible 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 a la valeur TargetEndpoint1, la requête est transférée 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 point de terminaison proxy.

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 point de terminaison cible. Cela s'avère utile lorsque le point de terminaison proxy 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