Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configurer la validation de base des demandes dans API Gateway
Cette section explique comment configurer la validation des demandes pour API Gateway à l'aide de la console et d'une API définition ouverte. AWS CLI
Rubriques
Configurer la validation des demandes à l'aide de la console API Gateway
Vous pouvez utiliser la console API Gateway pour valider une demande en sélectionnant l'un des trois validateurs suivants API :
-
Valider le corps.
-
Valider les paramètres de chaîne de requête et les en-têtes.
-
Valider le corps et les paramètres et en-têtes des chaînes de requête.
Lorsque vous appliquez l'un des validateurs à une API méthode, la console API Gateway ajoute le validateur à API la RequestValidatorscarte.
Pour suivre ce didacticiel, vous allez utiliser un AWS CloudFormation modèle pour créer une API passerelle incomplèteAPI. Cela API contient une /validator
ressource avec GET
et des POST
méthodes. Les deux méthodes sont intégrées au http://petstore-demo-endpoint.execute-api.com/petstore/pets
HTTP point final. Vous allez configurer deux types de validation des demandes :
-
Dans la
GET
méthode, vous allez configurer la validation des demandes pour les paramètres de chaîne de URL requête. -
Dans la méthode
POST
, vous allez configurer la validation des demandes pour le corps de la demande.
Cela permettra uniquement à certains API appels de passer vers leAPI.
Téléchargez et décompressez le modèle de création d'application pour AWS CloudFormation. Vous allez utiliser ce modèle pour créer un fichier incompletAPI. Vous terminerez le reste des étapes dans la console API Gateway.
Pour créer une AWS CloudFormation pile
Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation
. -
Choisissez Créer une pile, puis choisissez Avec de nouvelles ressources (standard).
-
Dans Spécifier le modèle, choisissez Charger un modèle de fichier.
-
Sélectionnez le modèle que vous avez téléchargé.
-
Choisissez Suivant.
-
Pour Nom de la pile, saisissez
request-validation-tutorial-console
, puis choisissez Suivant. -
Pour Configurer les options de pile, choisissez Suivant.
-
Pour les fonctionnalités, reconnaissez que AWS CloudFormation vous pouvez créer IAM des ressources dans votre compte.
-
Sélectionnez Envoyer.
AWS CloudFormation fournit les ressources spécifiées dans le modèle. La fin du provisionnement de vos ressources peut prendre quelques minutes. Lorsque le statut de votre AWS CloudFormation pile est CREATE_ COMPLETE, vous êtes prêt à passer à l'étape suivante.
Pour sélectionner votre nouvelle création API
Sélectionnez la pile
request-validation-tutorial-console
nouvellement créée.Sélectionnez Ressources.
Sous Identifiant physique, choisissez votreAPI. Ce lien vous dirigera vers la console API Gateway.
Avant de modifier les méthodes GET
et POST
, vous devez créer un modèle.
Pour créer un modèle
-
Un modèle est requis pour utiliser la validation des demandes sur le corps d'une demande entrante. Pour créer un modèle, dans le volet de navigation principal, choisissez Modèles.
-
Sélectionnez Create model.
-
Pour Name (Nom), saisissez
PetStoreModel
. -
Pour Type de contenu, entrez
application/json
. Si aucun type de contenu correspondant n'est trouvé, la validation de demande n'est pas effectuée. Pour utiliser le même modèle quel que soit le type de contenu, saisissez$default
. -
Pour Description, saisissez
My PetStore Model
comme description du modèle. -
Pour Schéma du modèle, collez le modèle suivant dans l’éditeur de code, puis choisissez Créer.
{ "type" : "object", "required" : [ "name", "price", "type" ], "properties" : { "id" : { "type" : "integer" }, "type" : { "type" : "string", "enum" : [ "dog", "cat", "fish" ] }, "name" : { "type" : "string" }, "price" : { "type" : "number", "minimum" : 25.0, "maximum" : 500.0 } } }
Pour plus d’informations sur le modèle, consultez Modèles de données pour REST APIs.
Pour configurer la validation de requête pour une méthode GET
-
Dans le volet de navigation principal, choisissez Resources, puis sélectionnez la GETméthode.
-
Dans l'onglet Demande de méthode, sous Paramètres de demande de méthode, choisissez Modifier.
-
Pour Validateur de requête, sélectionnez Valider les paramètres de chaîne de requête et les en-têtes.
Sous Paramètres de chaîne de URL requête, procédez comme suit :
Sélectionnez Add query string (Ajouter une chaîne de requêtes).
Pour Name (Nom), saisissez
petType
.Activez Obligatoire.
Maintenez Mise en cache désactivée.
-
Choisissez Enregistrer.
-
Dans l’onglet Requête d’intégration, sous Paramètres de requête d’intégration, choisissez Modifier.
Sous Paramètres de chaîne de URL requête, procédez comme suit :
Sélectionnez Add query string (Ajouter une chaîne de requêtes).
Pour Name (Nom), saisissez
petType
.Pour Mappage à partir de, entrez
method.request.querystring.petType
. Cela mappepetType
au type d'animal de compagnie.Pour plus d'informations sur le mappage des données, consultez le didacticiel sur le mappage des données.
Maintenez Mise en cache désactivée.
Choisissez Enregistrer.
Pour tester la validation des requêtes pour la méthode GET
-
Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l'onglet.
-
Pour Chaînes de requête, saisissez
petType=dog
, puis choisissez Tester. -
Le test de méthode renverra
200 OK
et une liste de chiens.Pour obtenir des informations sur la façon de transformer ces données de sortie, consultez le didacticiel sur le mappage des données.
-
Supprimez
petType=dog
et choisissez Tester. -
Le test de méthode renverra une erreur
400
avec le message d’erreur suivant :{ "message": "Missing required request parameters: [petType]" }
Pour configurer la validation de requête pour la méthode POST
-
Dans le volet de navigation principal, choisissez Resources, puis sélectionnez la POSTméthode.
-
Dans l'onglet Demande de méthode, sous Paramètres de demande de méthode, choisissez Modifier.
-
Pour Validateur de requête, sélectionnez Valider le corps.
-
Sous Corps de la requête, choisissez Ajouter un modèle.
-
Pour Type de contenu, entrez
application/json
, puis pour Modèle, sélectionnez PetStoreModel. Choisissez Enregistrer.
Pour tester la validation de requête pour une méthode POST
-
Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l'onglet.
-
Sous Corps de la requête, collez ce qui suit dans l’éditeur de code :
{ "id": 2, "name": "Bella", "type": "dog", "price": 400 }
Sélectionnez Tester).
-
Le test de méthode renverra
200 OK
et un message de réussite. -
Sous Corps de la requête, collez ce qui suit dans l’éditeur de code :
{ "id": 2, "name": "Bella", "type": "dog", "price": 4000 }
Sélectionnez Tester).
-
Le test de méthode renverra une erreur
400
avec le message d’erreur suivant :{ "message": "Invalid request body" }
Au bas des journaux de test, la raison pour laquelle le corps de la requête est non valide est renvoyée. Dans ce cas, le prix de l'animal de compagnie était supérieur au maximum spécifié dans le modèle.
Pour supprimer une AWS CloudFormation pile
Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation
. -
Sélectionnez votre AWS CloudFormation pile.
-
Choisissez Supprimer, puis confirmez votre choix.
Étapes suivantes
Pour obtenir des informations sur la façon de transformer les données de sortie et d'effectuer plus de mappage des données, consultez le didacticiel sur le mappage des données.
Suivez le didacticiel Configuration d'une validation de base des demandes à l'aide de l'interface AWS CLI, pour effectuer des étapes similaires à l'aide de l'interface AWS CLI.
Configurez la validation de base des demandes à l'aide du AWS CLI
Vous pouvez créer un validateur pour configurer la validation des demandes à l'aide de l'interface AWS CLI. Pour suivre ce didacticiel, vous allez utiliser un AWS CloudFormation modèle pour créer une API passerelle incomplèteAPI.
Note
Il ne s'agit pas du même AWS CloudFormation modèle que le didacticiel de la console.
À l'aide d'une ressource /validator
pré-exposée, vous allez créer les méthodes GET
et POST
. Les deux méthodes seront intégrées au http://petstore-demo-endpoint.execute-api.com/petstore/pets
HTTP point de terminaison. Vous allez configurer les deux validations de demandes suivantes :
-
Sur la
GET
méthode, vous allez créer unparams-only
validateur pour valider les paramètres de la chaîne de URL requête. -
Sur la méthode
POST
, vous allez créer un validateurbody-only
pour valider le corps de la demande.
Cela permettra uniquement à certains API appels de passer vers leAPI.
Pour créer une AWS CloudFormation pile
Téléchargez et décompressez le modèle de création d'application pour AWS CloudFormation.
Pour effectuer le didacticiel suivant, vous avez besoin de l'AWS Command Line Interface (AWS CLI) version 2.
Pour les commandes longues, un caractère d’échappement (\
) est utilisé pour les fractionner en plusieurs lignes.
Note
Sous Windows, certaines CLI commandes Bash que vous utilisez fréquemment (telles quezip
) ne sont pas prises en charge par les terminaux intégrés du système d'exploitation. Installez le sous-système Windows pour Linux
Utilisez la commande suivante pour créer la AWS CloudFormation pile.
aws cloudformation create-stack --stack-name request-validation-tutorial-cli --template-body file://request-validation-tutorial-cli.zip --capabilities CAPABILITY_NAMED_IAM
-
AWS CloudFormation fournit les ressources spécifiées dans le modèle. La fin du provisionnement de vos ressources peut prendre quelques minutes. Utilisez la commande suivante pour voir l'état de votre AWS CloudFormation pile.
aws cloudformation describe-stacks --stack-name request-validation-tutorial-cli
-
Lorsque le statut de votre AWS CloudFormation pile est défini
StackStatus: "CREATE_COMPLETE"
, utilisez la commande suivante pour récupérer les valeurs de sortie pertinentes pour les étapes futures.aws cloudformation describe-stacks --stack-name request-validation-tutorial-cli --query "Stacks[*].Outputs[*].{OutputKey: OutputKey, OutputValue: OutputValue, Description: Description}"
Les valeurs de sortie sont les suivantes :
ApiId, qui est l'identifiant duAPI. Pour ce didacticiel, l'APIidentifiant est
abc123
.ResourceId, qui est l'ID de la ressource de validation dans laquelle les
POST
méthodesGET
et sont exposées. Pour ce didacticiel, l'ID de ressource estefg456
.
Pour créer les validateurs de demandes et importer un modèle
-
Un validateur est requis pour utiliser la validation des demandes avec l'interface AWS CLI. Utilisez la commande suivante pour créer un validateur qui valide uniquement les paramètres de demande.
aws apigateway create-request-validator --rest-api-id
abc123
\ --no-validate-request-body \ --validate-request-parameters \ --name params-onlyNotez l'ID du validateur
params-only
. -
Utilisez la commande suivante pour créer un validateur qui valide uniquement le corps de la demande.
aws apigateway create-request-validator --rest-api-id
abc123
\ --validate-request-body \ --no-validate-request-parameters \ --name body-onlyNotez l'ID du validateur
body-only
. -
Un modèle est requis pour utiliser la validation des demandes sur le corps d'une demande entrante. Utilisez la commande suivante pour importer un modèle.
aws apigateway create-model --rest-api-id
abc123
--name PetStoreModel --description 'My PetStore Model' --content-type 'application/json' --schema '{"type": "object", "required" : [ "name", "price", "type" ], "properties" : { "id" : {"type" : "integer"},"type" : {"type" : "string", "enum" : [ "dog", "cat", "fish" ]},"name" : { "type" : "string"},"price" : {"type" : "number","minimum" : 25.0, "maximum" : 500.0}}}}'Si aucun type de contenu correspondant n'est trouvé, la validation de demande n'est pas effectuée. Pour utiliser le même modèle quel que soit le type de contenu, spécifiez
$default
comme clé.
Pour créer les méthodes GET
et POST
-
Utilisez la commande suivante pour ajouter la
GET
HTTP méthode à la/validate
ressource. Cette commande crée la méthodeGET
, ajoute le validateurparams-only
et définit la chaîne de requêtepetType
selon les besoins.aws apigateway put-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GET \ --authorization-type "NONE" \ --request-validator-idaaa111
\ --request-parameters "method.request.querystring.petType=true"Utilisez la commande suivante pour ajouter la
POST
HTTP méthode à la/validate
ressource. Cette commande crée la méthodePOST
, ajoute le validateurbody-only
et attache le modèle au validateur de corps uniquement.aws apigateway put-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --authorization-type "NONE" \ --request-validator-idbbb222
\ --request-models 'application/json'=PetStoreModel -
Utilisez la commande suivante pour configurer la réponse
200 OK
de la méthodeGET /validate
.aws apigateway put-method-response --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GET \ --status-code 200Utilisez la commande suivante pour configurer la réponse
200 OK
de la méthodePOST /validate
.aws apigateway put-method-response --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --status-code 200 -
Utilisez la commande suivante pour configurer un
Integration
avec un point de HTTP terminaison spécifié pour laGET /validation
méthode.aws apigateway put-integration --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GET \ --type HTTP \ --integration-http-method GET \ --request-parameters '{"integration.request.querystring.type" : "method.request.querystring.petType"}' \ --uri 'http://petstore-demo-endpoint.execute-api.com/petstore/pets'Utilisez la commande suivante pour configurer un
Integration
avec un point de HTTP terminaison spécifié pour laPOST /validation
méthode.aws apigateway put-integration --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --type HTTP \ --integration-http-method GET \ --uri 'http://petstore-demo-endpoint.execute-api.com/petstore/pets' -
Utilisez la commande suivante pour configurer une réponse d'intégration pour la méthode
GET /validation
.aws apigateway put-integration-response --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GET \ --status-code 200 \ --selection-pattern ""Utilisez la commande suivante pour configurer une réponse d'intégration pour la méthode
POST /validation
.aws apigateway put-integration-response --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --status-code 200 \ --selection-pattern ""
Pour tester le API
-
Pour tester la méthode
GET
qui effectuera la validation des demandes pour les chaînes de requête, utilisez la commande suivante :aws apigateway test-invoke-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GET \ --path-with-query-string '/validate?petType=dog'Le résultat sera
200 OK
et une liste de chiens. -
Utilisez la commande suivante pour tester sans inclure la chaîne de requête
petType
.aws apigateway test-invoke-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GETLe résultat sera une erreur
400
. -
Pour tester la méthode
POST
qui effectuera la validation des demandes pour le corps de la demande, utilisez la commande suivante :aws apigateway test-invoke-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --body '{"id": 1, "name": "bella", "type": "dog", "price" : 400 }'Le résultat sera
200 OK
et un message de réussite. -
Utilisez la commande suivante pour tester en utilisant un corps non valide.
aws apigateway test-invoke-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --body '{"id": 1, "name": "bella", "type": "dog", "price" : 1000 }'Le résultat sera une erreur
400
, car le prix du chien est supérieur au prix maximum défini par le modèle.
Pour supprimer une AWS CloudFormation pile
Utilisez la commande suivante pour supprimer vos AWS CloudFormation ressources.
aws cloudformation delete-stack --stack-name request-validation-tutorial-cli
Configurer la validation de base des demandes à l'aide d'une API définition ouverte
Vous pouvez déclarer un validateur de demande au API niveau en spécifiant un ensemble d'x-amazon-apigateway-request-validateurs. requestValidator objetobjets sur la x-amazon-apigateway-requestobjet -validators carte afin de sélectionner la partie de la demande qui sera validée. Dans l'exemple de API définition ouverte, il existe deux validateurs :
Le validateur
all
qui valide à la fois le corps, à l'aide du modèle de donnéesRequestBodyModel
, et les paramètres.Le modèle de
RequestBodyModel
données nécessite que l'JSONobjet d'entrée contienne lesprice
propriétésname
type
, et. La propriéténame
peut être une chaîne,type
doit être l'un de champs d'énumération spécifiés (["dog", "cat", "fish"]
) etprice
doit être compris entre 25 et 500. Le paramètreid
n'est pas obligatoire.Le validateur
param-only
qui valide uniquement les paramètres.
Pour activer un validateur de demande sur toutes les méthodes de anAPI, spécifiez une x-amazon-apigateway-requestpropriété -validator propriété au API niveau de la API définition ouverte. Dans l'exemple de API définition ouverte, le all
validateur est utilisé sur toutes les API méthodes, sauf dérogation contraire. Lorsque vous utilisez un modèle pour valider le corps et qu'aucun type de contenu correspondant n'est trouvé, la validation de demande n'est pas effectuée. Pour utiliser le même modèle quel que soit le type de contenu, spécifiez $default
comme clé.
Pour activer un validateur de demande sur une méthode individuelle, spécifiez la propriété x-amazon-apigateway-request-validator
au niveau de la méthode. Dans l'exemple, Open API definition, le param-only
validateur remplace le all
validateur de la méthode. GET
Pour importer l'APIexemple Open dans API Gateway, consultez les instructions suivantes pour Importer une API régionale dans API Gateway ou pourImportation d'une API optimisée pour les périphériques dans API Gateway.