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 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 :
- 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. - La deuxième partie de l'URL,
/v1/weather
, est déterminée par l'élément<BasePath>
duProxyEndpoint
. 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. - 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
- Documentation de référence sur la configuration des proxys d'API
- Documentation de référence sur les propriétés des points de terminaison
- Équilibrage de charge sur les serveurs de backend