Cette page s'applique à Apigee et à Apigee hybrid.
Consultez la documentation d'Apigee Edge.
Lorsque vous envoyez une requête à un proxy d'API, vous pouvez transmettre tout ou partie des informations suivantes, selon la configuration du proxy d'API :
- En-têtes de requête
- Paramètres de requête
- Données de formulaire
- Charges utiles XML ou JSON
- URI de ressource
Par défaut, toutes les données d'une requête sont transmises de ProxyEndpoint à TargetEndpoint. Par conséquent, lorsque TargetEndpoint envoie la requête au serveur backend, toutes les informations de la requête d'origine sont transmises au service de backend.
Il en va de même pour la réponse reçue du service de backend par Apigee. Par défaut, toutes les données reçues dans la réponse sont transmises sans modification à l'application à l'origine de la requête.
Comment les données de requête sont-elles transmises au serveur backend ?
L'image suivante illustre une définition de proxy d'API :
Pour ce proxy d'API :
- Hôte virtuel du proxy d'API :
default
- Domaine défini par les noms d'hôte du groupe d'environnement :
http://www.example.com
- Chemin de base du proxy :
/v1/weather
- Point de terminaison cible spécifié par la règle de routage :
default
- URL cible :
http://weather.yahooapis.com
Une application cliente envoie une requête GET
au proxy d'API à l'aide de la commande curl
suivante :
curl -X GET http://www.example.com/v1/weather/forecastrss?w=12797282
Notez que cette requête contient la ressource forecastrss
et un paramètre de requête, w
. Apigee analyse la requête comme indiqué ci-dessous et attribue certaines parties de la requête aux variables de flux :
{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}
Les variables de flux sont définies avec les valeurs suivantes :
request.verb
:GET
proxy.basepath
:/v1/weather
proxy.pathsuffix
:forecastrss
request.querystring
:w=12797282
Le TargetEndpoint envoie ensuite une requête au service de backend en utilisant les informations de la requête :
{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}
Remarquez la façon dont les paramètres de ressource et de requête spécifiés dans la requête sont automatiquement inclus dans la requête adressée au serveur backend. À partir de la définition de TargetEndpoint, la requête se présente alors sous la forme :
curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282
Tout comme les paramètres de requête, les en-têtes ou les paramètres de formulaire que vous incluez dans la requête au proxy d'API sont transmis au serveur backend. Par exemple, vous exécutez la requête ci-dessous qui inclut un en-tête :
curl -X GET -H 'Content-type:application/xml' http://www.example.com/v1/weather/forecastrss?w=12797282
Ou vous exécutez une requête ci-dessous pour inclure un en-tête et des données de formulaire :
curl -X POST -H "Content-type:application/json" -d \ '{"email" : "janetutorialxml@example.com", "firstName" : "Jane", "lastName" : "Tutorial", "userName" : "jtutorialxml" }' \ http://www.example.com/v1/register/user
Dans les deux exemples, les en-têtes et les données de formulaire sont transmis au service de backend sans modification. Les en-têtes sont représentés par des variables de flux telles que request.headers.count
et request.headers.names
. Les données de formulaire sont représentées par des variables de flux telles que request.formparam.count
et request.formparam.names
.
Comment les données de réponse sont-elles renvoyées ?
Par défaut, toutes les données provenant du service de backend reçues par Apigee dans la réponse sont transmises sans modification à l'application à l'origine de la requête. Comme décrit ci-dessus pour la requête, les données renvoyées dans la réponse sont accessibles via des variables de flux sur Apigee. Pour en savoir plus, consultez la Documentation de référence sur les variables de flux.
Accéder aux données de requête et de réponse dans un proxy d'API
Il peut arriver que vous souhaitiez modifier des données de requête avant de les envoyer au serveur backend. Exemple :
- Pour supprimer les informations de sécurité utilisées par Apigee pour valider les requêtes. Ces informations ne sont pas requises par le service de backend.
- Pour ajouter des données envoyées au service de backend, par exemple pour suivre les utilisateurs ou pour collecter des données analytiques.
- Pour traiter de manière conditionnelle la requête en fonction des données de la requête. Par exemple, un proxy d'API peut avoir plusieurs TargetEndpoints. Le TargetEndpoint utilisé par la requête est déterminé par les données de la requête. Vous supprimez ensuite ces données de la requête avant de les envoyer au service de backend.
Il en va de même pour les données de réponse. Dans le cadre du traitement de la réponse, le proxy d'API peut souhaiter modifier les données avant de les renvoyer à l'application à l'origine de la requête.
Accéder aux messages de requête
Vous pouvez utiliser des stratégies pour accéder à des parties d'un message de requête et les modifier. Ces parties incluent :
- En-têtes
- Paramètres de requête
- Paramètres de formulaire
- Adresse IP source
- Corps du message HTTP
Dans un flux normal, une fois la requête traitée, le proxy envoie la requête transformée à la cible.
Les stratégies peuvent examiner les variables de requête, puis transformer ou rejeter la requête en fonction du contenu de ces variables. Les stratégies transforment la requête en définissant les variables appropriées, par exemple les variables correspondant aux en-têtes de requête.
Accéder aux messages de réponse
À l'aide des variables qui s'appliquent au message de réponse, les stratégies peuvent accéder aux composants de messages, y compris l'en-tête, les paramètres de requête et les paramètres de formulaire, l'adresse IP source, le corps du message HTTP, etc.
Le proxy reçoit un message de réponse, puis l'applique à une série de stratégies, en fonction des conditions évaluées sur la réponse, qui peuvent modifier ou transformer la réponse.
Les stratégies peuvent examiner les variables de réponse, puis transformer ou rejeter la requête en fonction du contenu de ces variables. Les stratégies transforment la réponse en définissant les variables appropriées, par exemple les variables correspondant aux en-têtes de réponse.
Stratégies courantes pour l'accès aux variables de flux
Apigee définit plusieurs stratégies que vous pouvez utiliser pour traiter les données de requête et de réponse. Ces stratégies incluent :
- Stratégie AssignMessage : Crée ou modifie les messages de requête ou de réponse HTTP lors d'un flux de proxy d'API. Crée et renseigne également de nouvelles variables de flux.
- Stratégie ExtractVariables : Extrait du contenu des messages, y compris les en-têtes, les chemins d'URI, les charges utiles et les paramètres de requête, pour l'utiliser dans une instruction de condition. La stratégie applique ensuite un modèle de texte au contenu du message et définit une variable désignée lors de la recherche d'une correspondance.
- Stratégie JSONtoXML et XMLtoJSON : Convertit les messages de JavaScript Object Notation (JSON) au format XML (langage de balisage extensible), ou inversement.
- Stratégie JavaCallout, stratégie JavaScript, stratégie PythonScript, stratégie RegularExpressionProtection : Ces stratégies vous permettent d'écrire un script pour accéder aux variables de flux contenant des données de requête et de réponse.