Ajout de stratégies de demande et de réponse aux spécifications de déploiement d'API
Découvrez comment contrôler le comportement des déploiements d'API en ajoutant des stratégies de demande et de réponse aux spécifications d'API que vous avez précédemment créées à l'aide d'API Gateway.
Vous pouvez contrôler le comportement d'un déploiement d'API créé sur une passerelle d'API en ajoutant des stratégies de demande et de réponse à la spécification de déploiement d'API :
- Une stratégie de demande qui décrit les actions à effectuer sur la demande entrante d'un client d'API avant que celle-ci ne soit envoyée à un back-end.
- Une stratégie de réponse qui décrit les actions à effectuer sur la réponse renvoyée par un back-end avant que celle-ci ne soit envoyée à un client d'API.
Vous pouvez utiliser des stratégies de demande et/ou des stratégies de réponse pour :
- limiter le nombre de demandes envoyées aux services back-end,
- activer la prise en charge de la spécification CORS,
- fournir l'authentification et l'autorisation.
- ajouter la prise en charge de mTLS
- valider les demandes avant de les envoyer aux services back-end
- modifier les demandes entrantes et les réponses sortantes.
- mettre en cache les réponses pour améliorer les performances et réduire la charge sur les services back-end
- rendre les déploiements d'API éligibles à l'inclusion dans les plans d'utilisation qui surveillent et gèrent l'accès des abonnés
Vous pouvez ajouter à une spécification de déploiement d'API des stratégies qui s'appliquent de façon globale à tous les routages de la spécification, ainsi que des stratégies qui s'appliquent uniquement à des routages particuliers.
Les stratégies de demande et de réponse API Gateway diffèrent des stratégies IAM, qui contrôlent l'accès aux ressources Oracle Cloud Infrastructure.
Vous pouvez ajouter des stratégies de demande et de réponse à une spécification de déploiement d'API en :
- utilisant la console,
- modifiant un fichier JSON.
Utilisation de la console pour ajouter des stratégies de demande et de réponse
Pour ajouter des stratégies de demande et de réponse à une spécification de déploiement d'API à l'aide de la console, procédez comme suit :
-
Créez ou mettez à jour un déploiement d'API à l'aide de la console, sélectionnez l'option Entièrement nouveau, puis saisissez les détails sur la page Informations de base.
Pour plus d'informations, reportez-vous à Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API et à Mise à jour d'une passerelle d'API.
-
Dans la section Stratégies de demande d'API de la page Informations de base, indiquez les stratégies de demande qui s'appliquent de façon globale à tous les routages dans la spécification de déploiement d'API :
- Mutual-TLS : stratégie permettant de contrôler l'accès aux API que vous déployez vers des passerelles d'API en fonction du certificat TLS présenté par le client d'API qui effectue une demande. Vous pouvez uniquement appliquer une stratégie mTLS de manière globale à tous les routages dans la spécification de déploiement d'API (et non à des routages spécifiques). Reportez-vous à Ajout de la prise en charge de mTLS aux déploiements d'API.
- CORS : stratégie permettant d'activer la prise en charge CORS dans les API que vous déployez vers des passerelles d'API. Vous pouvez également spécifier des stratégies CORS qui s'appliquent à des routages dans la spécification de déploiement d'API (vous n'avez pas besoin d'avoir préalablement spécifié une stratégie CORS globale). Reportez-vous à Ajout de la prise en charge CORS aux déploiements d'API.
- Limitation de débit : stratégie permettant de limiter le débit d'envoi de demandes aux services back-end à partir des clients d'API. Vous pouvez uniquement appliquer une stratégie de limitation de débit de façon globale à tous les routages dans la spécification de déploiement d'API (et non à des routages spécifiques). Reportez-vous à Limitation du nombre de demandes aux back-ends de passerelle d'API.
-
Sélectionnez Suivant pour indiquer les options permettant de définir une stratégie de demande d'authentification globale sur la page Authentification.
La stratégie de demande d'authentification contrôle l'accès aux API que vous déployez vers les passerelles d'API. Une fois que vous avez spécifié une stratégie d'authentification globale, vous pouvez indiquer des stratégies d'autorisation qui s'appliquent à des routages individuels dans la spécification de déploiement d'API. Reportez-vous à Ajout de l'authentification et de l'autorisation aux déploiements d'API.
-
Sélectionnez Suivant pour saisir les détails de chaque routage dans le déploiement d'API sur la page Routages.
-
Afin d'indiquer les stratégies de demande qui s'appliquent à un routage spécifique, sélectionnez Afficher les stratégies de demande de routage, ainsi que :
- Autorisation : stratégie permettant d'indiquer les opérations qu'un utilisateur final est autorisé à effectuer, en fonction des portées d'accès de ce dernier. Vous devez avoir spécifié une stratégie d'authentification globale pour pouvoir indiquer une stratégie d'autorisation sur un routage spécifique. Reportez-vous à Ajout de l'authentification et de l'autorisation aux déploiements d'API.
- CORS : stratégie permettant d'activer la prise en charge CORS pour des routages dans la spécification de déploiement d'API (vous n'avez pas besoin d'avoir préalablement saisi une stratégie CORS globale). Reportez-vous à Ajout de la prise en charge CORS aux déploiements d'API.
- Validations d'en-tête : stratégie permettant de valider les en-têtes dans les demandes. Reportez-vous à Utilisation de la console pour ajouter des stratégies de demande de validation.
- Validations de paramètre de requête : stratégie permettant de valider les paramètres de requête dans les demandes. Reportez-vous à Utilisation de la console pour ajouter des stratégies de demande de validation.
- Validation du corps : stratégie permettant de valider le contenu dans le corps des demandes. Reportez-vous à Utilisation de la console pour ajouter des stratégies de demande de validation
- Transformations d'en-tête : stratégie permettant d'ajouter, d'enlever et de modifier des en-têtes dans les demandes. Reportez-vous à Utilisation de la console pour ajouter des stratégies de demande de transformation d'en-tête.
- Transformations de requête : stratégie permettant d'ajouter, d'enlever et de modifier des paramètres de requête dans les demandes. Reportez-vous à Utilisation de la console pour ajouter des stratégies de demande de transformation de paramètre de requête.
-
Pour indiquer les stratégies de réponse qui s'appliquent à un routage spécifique, sélectionnez Afficher les stratégies de réponse de routage, puis indiquez les éléments suivants :
- Transformations d'en-tête : stratégie permettant d'ajouter, d'enlever et de modifier des en-têtes dans les réponses. Reportez-vous à Utilisation de la console pour ajouter des stratégies de réponse de transformation d'en-tête.
- Sélectionnez Suivant afin de vérifier les détails saisis pour le déploiement d'API.
- Sélectionnez Créer ou Enregistrer les modifications pour créer ou mettre à jour le déploiement d'API.
- (Facultatif) Vérifiez que l'API a été déployée en l'appelant (reportez-vous à Appel d'une API déployée sur une passerelle d'API).
Modification d'un fichier JSON pour ajouter des stratégies de demande et de réponse
Pour ajouter des stratégies de demande et de réponse à une spécification de déploiement d'API dans un fichier JSON, procédez comme suit :
-
A l'aide de l'éditeur JSON de votre choix, modifiez la spécification de déploiement d'API existante à laquelle vous voulez ajouter une stratégie de demande ou de réponse, ou créez une spécification de déploiement d'API (reportez-vous à Création d'une spécification de déploiement d'API).
Au minimum, la spécification de déploiement d'API doit inclure une section
routes
contenant les éléments suivants :- Un chemin. Par exemple,
/hello
. - Des méthodes. Par exemple,
GET
. - La définition d'un back-end. Par exemple, une URL ou l'OCID d'une fonction dans OCI Functions.
Par exemple, la spécification de déploiement d'API de base suivante définit une fonction simple sans serveur Hello World dans OCI Functions en tant que back-end unique :
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }
- Un chemin. Par exemple,
-
Pour ajouter une stratégie de demande qui s'applique de façon globale à tous les routages de la spécification de déploiement d'API, procédez comme suit :
-
Insérez une section
requestPolicies
avant la sectionroutes
. Par exemple :{ "requestPolicies": {}, "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }
-
Incluez une stratégie de demande dans la section
requestPolicies
.Par exemple, pour limiter le nombre de demandes envoyées à tous les routages dans une spécification de déploiement d'API, vous devez inclure la stratégie
rateLimiting
dans la sectionrequestPolicies
comme suit :{ "requestPolicies": { "rateLimiting": { "rateKey": "CLIENT_IP", "rateInRequestsPerSecond": 10 } }, "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }
Pour plus d'informations sur la stratégie de demande
rateLimiting
, reportez-vous à Limitation du nombre de demandes aux back-ends de passerelle d'API.
-
-
Pour ajouter une stratégie de demande qui s'applique à un seul routage dans la spécification de déploiement d'API, procédez comme suit :
-
Insérez une section
requestPolicies
après la sectionbackend
du routage. Par exemple :{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": {} } ] }
-
Incluez une stratégie de demande dans la section
requestPolicies
.Par exemple, afin d'activer la prise en charge CORS dans le déploiement d'API pour un routage spécifique, vous devez inclure la stratégie
cors
dans la sectionrequestPolicies
comme suit :{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "cors":{ "allowedOrigins": ["*", "https://oracle.com"], "allowedMethods": ["*", "GET"], "allowedHeaders": [], "exposedHeaders": [], "isAllowCredentialsEnabled": false, "maxAgeInSeconds": 3000 } } } ] }
Pour plus d'informations sur la stratégie de demande
cors
, reportez-vous à Ajout de la prise en charge CORS aux déploiements d'API.
-
-
Pour ajouter une stratégie de réponse qui s'applique à un seul routage dans la spécification de déploiement d'API, procédez comme suit :
-
Insérez une section
responsePolicies
après la sectionbackend
du routage. Par exemple :{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "responsePolicies": {} } ] }
-
Incluez une stratégie de réponse dans la section
responsePolicies
.Par exemple, pour renommer un en-tête
X-Username
enX-User-ID
dans la réponse d'un routage particulier, vous devez inclure la stratégieheaderTransformations
dans la sectionresponsePolicies
comme suit :{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "responsePolicies": { "headerTransformations": { "renameHeaders": { "items": [ { "from": "X-Username", "to": "X-User-ID" } ] } } } } ] }
Pour plus d'informations sur la stratégie de réponse
headerTransformations
, reportez-vous à Modification d'un fichier JSON pour ajouter des stratégies de réponse de transformation d'en-tête.
-
- Enregistrez le fichier JSON qui contient la spécification de déploiement d'API.
-
Utilisez la spécification de déploiement d'API lorsque vous créez ou mettez à jour un déploiement d'API en :
- spécifiant le fichier JSON dans la console lorsque vous sélectionnez l'option Télécharger une API existante,
- spécifiant le fichier JSON dans une demande adressée à l'API REST d'API Gateway.
Pour plus d'informations, reportez-vous à Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API.