Exemples de remplacement des paramètres de demande et API de réponse et des codes d'état d'un - APIPasserelle Amazon

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.

  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Sous APIs, choisissez le PetStore API, puis sélectionnez Ressources.

  3. Dans l’arborescence Ressources, sous GET, choisissez la méthode sous /{petId}.

  4. Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l'onglet.

  5. 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.

  6. Dans l’onglet Réponse d’intégration, pour Par défaut - Réponse, choisissez Modifier.

  7. Choisissez Modèles de mappage.

  8. Sélectionnez Add mapping template.

  9. Pour Type de contenu, entrez application/json.

  10. 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
  11. Choisissez Enregistrer.

  12. Choisissez l’onglet Test.

  13. Pour petId, saisissez -1.

  14. 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.header_name à un nouvel en-tête combinant deux autres en-têtes.

  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Sous APIs, choisissez le PetStore API.

  3. Dans l’arborescence Ressources, sous GET, choisissez la méthode sous /pet.

  4. Dans l’onglet Requête de méthode, pour Paramètres de requête de méthode, choisissez Modifier.

  5. Choisissez les en-têtes de HTTP demande, puis choisissez Ajouter un en-tête.

  6. Pour Name (Nom), saisissez header1.

  7. Choisissez Ajouter un en-tête, puis créez un second en-tête appelé header2.

  8. Choisissez Enregistrer.

  9. Dans l’onglet Demande d’intégration, pour Paramètres de requête d’intégration, choisissez Modifier.

  10. Pour Transmission du corps de requête, sélectionnez Lorsqu’aucun modèle n’est défini (recommandé).

  11. Choisissez Modèles de mappage, puis procédez comme suit :

    1. Sélectionnez Add mapping template.

    2. Pour Type de contenu, entrez application/json.

    3. 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])
  12. Choisissez Enregistrer.

  13. Choisissez l’onglet Test.

  14. Sous Headers (En-têtes) pour {pets}, copiez le code suivant :

    header1:header1Val header2:header2Val
  15. 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>

<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>

<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 });