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.
Exemples de remplacement des paramètres de demande et API de réponse et des codes d'état d'un
Les exemples suivants montrent comment créer et tester un remplacement de modèle de mappage. Les deux premiers exemples utilisent AWS Management Console et l'exemple API comme point de départ. Les deux derniers exemples utilisent le AWS CLI et le SDK for JavaScript.
Remplacez le code d'état API de réponse d'un utilisateur à l'aide du AWS Management Console
Pour récupérer un animal de compagnie à l'aide de l' PetStore exempleAPI, vous devez utiliser la API méthode request ofGET
/pets/{petId}
, où se {petId}
trouve un paramètre de chemin qui peut prendre un nombre au moment de l'exécution.
Dans cet exemple, vous allez remplacer le code de réponse de cette GET
méthode 400
en créant un modèle de mappage qui correspond $context.responseOverride.status
à la détection d'une condition d'erreur.
Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway
. -
Sous APIs, choisissez le PetStore API, puis sélectionnez Ressources.
-
Dans l’arborescence Ressources, sous
GET
, choisissez la méthode sous/{petId}
. -
Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l'onglet.
-
Pour petId, entrez
-1
, puis choisissez Test.Dans les résultats, vous verrez deux choses :
Tout d'abord, le corps de la réponse indique une out-of-range erreur :
{ "errors": [ { "key": "GetPetRequest.petId", "message": "The value is out of range." } ] }
Deuxièmement, la dernière ligne sous la case Journal se termine par :
Method completed with status: 200
. -
Dans l’onglet Réponse d’intégration, pour Par défaut - Réponse, choisissez Modifier.
-
Choisissez Modèles de mappage.
-
Sélectionnez Add mapping template.
-
Pour Type de contenu, entrez
application/json
. -
Pour Corps du modèle, saisissez ce qui suit :
#set($inputRoot = $input.path('$')) $input.json("$") #if($inputRoot.toString().contains("error")) #set($context.responseOverride.status = 400) #end
-
Choisissez Enregistrer.
-
Choisissez l’onglet Test.
-
Pour petId, saisissez
-1
. -
Dans les résultats, le corps de réponse indique une out-of-range erreur :
{ "errors": [ { "key": "GetPetRequest.petId", "message": "The value is out of range." } ] }
Cependant, la dernière ligne sous Logs (Journaux) se termine maintenant par :
Method completed with status: 400
.
Remplacez les paramètres API de demande et les en-têtes d'un utilisateur à l'aide du AWS Management Console
Dans cet exemple, vous allez remplacer le code d'en-tête de demande de la GET
méthode en créant un modèle de mappage qui correspond $context.requestOverride.header.
à un nouvel en-tête combinant deux autres en-têtes.header_name
Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway
. -
Sous APIs, choisissez le PetStore API.
-
Dans l’arborescence Ressources, sous
GET
, choisissez la méthode sous/pet
. -
Dans l’onglet Requête de méthode, pour Paramètres de requête de méthode, choisissez Modifier.
-
Choisissez les en-têtes de HTTP demande, puis choisissez Ajouter un en-tête.
-
Pour Name (Nom), saisissez
header1
. -
Choisissez Ajouter un en-tête, puis créez un second en-tête appelé
header2
. -
Choisissez Enregistrer.
-
Dans l’onglet Demande d’intégration, pour Paramètres de requête d’intégration, choisissez Modifier.
-
Pour Transmission du corps de requête, sélectionnez Lorsqu’aucun modèle n’est défini (recommandé).
-
Choisissez Modèles de mappage, puis procédez comme suit :
-
Sélectionnez Add mapping template.
-
Pour Type de contenu, entrez
application/json
. -
Pour Corps du modèle, saisissez ce qui suit :
#set($header1Override = "foo") #set($header3Value = "$input.params('header1')$input.params('header2')") $input.json("$") #set($context.requestOverride.header.header3 = $header3Value) #set($context.requestOverride.header.header1 = $header1Override) #set($context.requestOverride.header.multivalueheader=[$header1Override, $header3Value])
-
-
Choisissez Enregistrer.
-
Choisissez l’onglet Test.
-
Sous Headers (En-têtes) pour {pets}, copiez le code suivant :
header1:header1Val header2:header2Val
-
Sélectionnez Test.
Dans le journal, vous devriez voir une entrée qui inclut ce texte :
Endpoint request headers: {header3=header1Valheader2Val, header2=header2Val, header1=foo, x-amzn-apigateway-api-id=
<api-id>
, Accept=application/json, multivalueheader=foo,header1Valheader2Val}
Remplacez les paramètres API de demande et les en-têtes d'un utilisateur à l'aide du AWS CLI
L'CLIexemple suivant montre comment utiliser la put-integration
commande pour remplacer un code de réponse :
aws apigateway put-integration --rest-api-id
<API_ID>
--resource-id<PATH_TO_RESOURCE_ID>
--http-method<METHOD>
--type<INTEGRATION_TYPE>
--request-templates<REQUEST_TEMPLATE_MAP>
où <REQUEST_TEMPLATE_MAP>
est une carte allant du type de contenu à une chaîne du modèle à appliquer. La structure de ce mappage se présente comme suit :
Content_type1=template_string,Content_type2=template_string
ou, en JSON syntaxe :
{"content_type1": "template_string" ...}
L'exemple suivant montre comment utiliser la put-integration-response
commande pour remplacer le code API de réponse d'un utilisateur :
aws apigateway put-integration-response --rest-api-id
<API_ID>
--resource-id<PATH_TO_RESOURCE_ID>
--http-method<METHOD>
--status-code<STATUS_CODE>
--response-templates<RESPONSE_TEMPLATE_MAP>
où <RESPONSE_TEMPLATE_MAP>
a le même format que <REQUEST_TEMPLATE_MAP>
ci-dessus.
Remplacez les paramètres API de demande et les en-têtes d'un utilisateur à l'aide du SDK JavaScript
L'exemple suivant montre comment utiliser la commande put-integration
pour remplacer un code de réponse :
Requête :
var params = { httpMethod: 'STRING_VALUE', /* required */ resourceId: 'STRING_VALUE', /* required */ restApiId: 'STRING_VALUE', /* required */ type: HTTP | AWS | MOCK | HTTP_PROXY | AWS_PROXY, /* required */ requestTemplates: { '
<Content_type>
': 'TEMPLATE_STRING', /* '<String>
': ... */ }, }; apigateway.putIntegration(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response });
Réponse :
var params = { httpMethod: 'STRING_VALUE', /* required */ resourceId: 'STRING_VALUE', /* required */ restApiId: 'STRING_VALUE', /* required */ statusCode: 'STRING_VALUE', /* required */ responseTemplates: { '<Content_type>': 'TEMPLATE_STRING', /* '<String>': ... */ }, }; apigateway.putIntegrationResponse(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response });