Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Exemples d'utilisation de variables pour mapper les transformations de modèles pour API Gateway

Mode de mise au point
Exemples d'utilisation de variables pour mapper les transformations de modèles pour API Gateway - Amazon API Gateway

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.

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.

Les exemples suivants montrent comment utiliser les util variables $contextinput, et dans les modèles de mappage. Vous pouvez utiliser une intégration fictive ou une intégration Lambda sans proxy qui renvoie l'événement d'entrée à API Gateway. Pour obtenir la liste de toutes les variables prises en charge pour les transformations de données, consultezVariables pour les transformations de données pour API Gateway.

Exemple 1 : Transmettre plusieurs $context variables au point de terminaison d'intégration

L’exemple suivant illustre un modèle de mappage qui mappe les variables $context entrantes aux variables de backend avec des noms légèrement différents dans une charge utile de la demande d’intégration :

{ "stage" : "$context.stage", "request_id" : "$context.requestId", "api_id" : "$context.apiId", "resource_path" : "$context.resourcePath", "resource_id" : "$context.resourceId", "http_method" : "$context.httpMethod", "source_ip" : "$context.identity.sourceIp", "user-agent" : "$context.identity.userAgent", "account_id" : "$context.identity.accountId", "api_key" : "$context.identity.apiKey", "caller" : "$context.identity.caller", "user" : "$context.identity.user", "user_arn" : "$context.identity.userArn" }

Le résultat de ce modèle de mappage doit ressembler à ce qui suit :

{ stage: 'prod', request_id: 'abcdefg-000-000-0000-abcdefg', api_id: 'abcd1234', resource_path: '/', resource_id: 'efg567', http_method: 'GET', source_ip: '192.0.2.1', user-agent: 'curl/7.84.0', account_id: '111122223333', api_key: 'MyTestKey', caller: 'ABCD-0000-12345', user: 'ABCD-0000-12345', user_arn: 'arn:aws:sts::111122223333:assumed-role/Admin/carlos-salazar' }

L’une des variables est une clé d’API. Dans cet exemple, on suppose que la méthode exige une clé d’API.

Exemple 2 : Transmettre tous les paramètres de demande au point de terminaison d'intégration via une charge utile JSON

L'exemple suivant transmet tous les paramètres de demande, y compris pathquerystring, et header les paramètres, au point de terminaison d'intégration via une charge utile JSON :

#set($allParams = $input.params()) { "params" : { #foreach($type in $allParams.keySet()) #set($params = $allParams.get($type)) "$type" : { #foreach($paramName in $params.keySet()) "$paramName" : "$util.escapeJavaScript($params.get($paramName))" #if($foreach.hasNext),#end #end } #if($foreach.hasNext),#end #end } }

Si une demande possède les paramètres d'entrée suivants :

  • Paramètre de chemin nommé myparam

  • Paramètres des chaînes de demande querystring1=value1,value2

  • En-têtes. "header1" : "value1"

Le résultat de ce modèle de mappage doit ressembler à ce qui suit :

{"params":{"path":{"example2":"myparamm"},"querystring":{"querystring1":"value1,value2"},"header":{"header1":"value1"}}}

Exemple 3 : Transmettre une sous-section d'une demande de méthode au point de terminaison d'intégration

L'exemple suivant utilise le paramètre d'entrée name pour récupérer uniquement le name paramètre et le paramètre d'entrée input.json('$') pour récupérer le corps entier de la demande de méthode :

{ "name" : "$input.params('name')", "body" : $input.json('$') }

Pour une demande qui inclut les paramètres de chaîne de demande name=Bella&type=dog et le corps suivant :

{ "Price" : "249.99", "Age": "6" }

Le résultat de ce modèle de mappage doit ressembler à ce qui suit :

{ "name" : "Bella", "body" : {"Price":"249.99","Age":"6"} }

Ce modèle de mappage supprime le paramètre de chaîne de requêtetype=dog.

Si l'entrée JSON contient des caractères non échappés qui ne peuvent pas être analysés JavaScript, API Gateway peut renvoyer une réponse 400. Appliquez $util.escapeJavaScript($input.json('$')) pour que les données d’entrée JSON puissent être analysées correctement.

L’exemple précédent avec application de $util.escapeJavaScript($input.json('$')) est le suivant :

{ "name" : "$input.params('name')", "body" : "$util.escapeJavaScript($input.json('$'))" }

Dans ce cas, le résultat de ce modèle de mappage doit ressembler à ce qui suit :

{ "name" : "Bella", "body": {"Price":"249.99","Age":"6"} }

Exemple 4 : Utiliser une JSONPath expression pour transmettre une sous-section d'une demande de méthode au point de terminaison d'intégration

L'exemple suivant utilise les JSONPath expressions pour récupérer uniquement le paramètre d'entrée name et le contenu Age du corps de la demande :

{ "name" : "$input.params('name')", "body" : $input.json('$.Age') }

Pour une demande qui inclut les paramètres de chaîne de demande name=Bella&type=dog et le corps suivant :

{ "Price" : "249.99", "Age": "6" }

Le résultat de ce modèle de mappage doit ressembler à ce qui suit :

{ "name" : "Bella", "body" : "6" }

Ce modèle de mappage supprime le paramètre de chaîne de requête type=dog et le Price champ du corps.

Si la charge utile d'une demande de méthode contient des caractères non échappés qui ne peuvent pas être analysés, API JavaScript Gateway peut renvoyer une réponse. 400 Appliquez $util.escapeJavaScript() pour que les données d’entrée JSON puissent être analysées correctement.

L’exemple précédent avec application de $util.escapeJavaScript($input.json('$.Age')) est le suivant :

{ "name" : "$input.params('name')", "body" : "$util.escapeJavaScript($input.json('$.Age'))" }

Dans ce cas, le résultat de ce modèle de mappage doit ressembler à ce qui suit :

{ "name" : "Bella", "body": "\"6\"" }

Exemple 5 : Utiliser une JSONPath expression pour transmettre des informations relatives à une demande de méthode au point de terminaison d'intégration

L'exemple suivant utilise $input.params()$input.path(), et $input.json() pour envoyer des informations sur une demande de méthode au point de terminaison d'intégration. Ce modèle de mappage utilise la size() méthode pour fournir le nombre d'éléments d'une liste.

{ "id" : "$input.params('id')", "count" : "$input.path('$.things').size()", "things" : $input.json('$.things') }

Pour une demande qui inclut le paramètre de chemin 123 et le corps suivant :

{ "things": { "1": {}, "2": {}, "3": {} } }

Le résultat de ce modèle de mappage doit ressembler à ce qui suit :

{"id":"123","count":"3","things":{"1":{},"2":{},"3":{}}}

Si la charge utile d'une demande de méthode contient des caractères non échappés qui ne peuvent pas être analysés, API JavaScript Gateway peut renvoyer une réponse. 400 Appliquez $util.escapeJavaScript() pour que les données d’entrée JSON puissent être analysées correctement.

L’exemple précédent avec application de $util.escapeJavaScript($input.json('$.things')) est le suivant :

{ "id" : "$input.params('id')", "count" : "$input.path('$.things').size()", "things" : "$util.escapeJavaScript($input.json('$.things'))" }

Le résultat de ce modèle de mappage doit ressembler à ce qui suit :

{"id":"123","count":"3","things":"{\"1\":{},\"2\":{},\"3\":{}}"}
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.