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

Exemple de modèle de mappage supplémentaire pour REST APIs dans API Gateway

Mode de mise au point
Exemple de modèle de mappage supplémentaire pour REST APIs dans 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.

L'exemple suivant montre une API d'album photo dans API Gateway qui utilise des modèles de mappage pour transformer les données de demande d'intégration et de réponse d'intégration. Il utilise également des modèles de données pour définir les charges utiles des demandes de méthode et des réponses d'intégration. Pour plus d’informations sur les modèles de données, consultez Modèles de données pour REST APIs.

Demande de méthode et demande d'intégration

Voici un modèle qui définit le corps de la demande de méthode. Ce modèle de saisie nécessite que l'appelant télécharge une page photo, et nécessite un minimum de 10 photos pour chaque page. Vous pouvez utiliser ce modèle d'entrée pour générer un SDK ou pour utiliser la validation des demandes pour votre API. Lors de l'utilisation de la validation des demandes, si le corps de la demande de méthode ne correspond pas à la structure de données du modèle, API Gateway échoue.

{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "PhotosInputModel", "type": "object", "properties": { "photos": { "type": "object", "required" : [ "photo" ], "properties": { "page": { "type": "integer" }, "pages": { "type": "string" }, "perpage": { "type": "integer", "minimum" : 10 }, "total": { "type": "string" }, "photo": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "owner": { "type": "string" }, "photographer_first_name" : {"type" : "string"}, "photographer_last_name" : {"type" : "string"}, "secret": { "type": "string" }, "server": { "type": "string" }, "farm": { "type": "integer" }, "title": { "type": "string" }, "ispublic": { "type": "boolean" }, "isfriend": { "type": "boolean" }, "isfamily": { "type": "boolean" } } } } } } } }

Voici un exemple de corps de demande de méthode qui respecte la structure de données du modèle de données précédent.

{ "photos": { "page": 1, "pages": "1234", "perpage": 100, "total": "123398", "photo": [ { "id": "12345678901", "owner": "23456789@A12", "photographer_first_name" : "Saanvi", "photographer_last_name" : "Sarkar", "secret": "abc123d456", "server": "1234", "farm": 1, "title": "Sample photo 1", "ispublic": true, "isfriend": false, "isfamily": false }, { "id": "23456789012", "owner": "34567890@B23", "photographer_first_name" : "Richard", "photographer_last_name" : "Roe", "secret": "bcd234e567", "server": "2345", "farm": 2, "title": "Sample photo 2", "ispublic": true, "isfriend": false, "isfamily": false } ] } }

Dans cet exemple, si le corps de la demande de méthode précédente a été soumis par le client, ce modèle de mappage transforme la charge utile pour qu'elle corresponde au format requis par le point de terminaison d'intégration.

#set($inputRoot = $input.path('$')) { "photos": [ #foreach($elem in $inputRoot.photos.photo) { "id": "$elem.id", "photographedBy": "$elem.photographer_first_name $elem.photographer_last_name", "title": "$elem.title", "ispublic": $elem.ispublic, "isfriend": $elem.isfriend, "isfamily": $elem.isfamily }#if($foreach.hasNext),#end #end ] }

L'exemple suivant montre les données de sortie de la transformation :

{ "photos": [ { "id": "12345678901", "photographedBy": "Saanvi Sarkar", "title": "Sample photo 1", "ispublic": true, "isfriend": false, "isfamily": false }, { "id": "23456789012", "photographedBy": "Richard Roe", "title": "Sample photo 2", "ispublic": true, "isfriend": false, "isfamily": false } ] }

Ces données sont envoyées à la demande d'intégration, puis au point de terminaison d'intégration.

Réponse d'intégration et réponse de méthode

Voici un exemple de modèle de sortie pour les données photo du point de terminaison d'intégration. Vous pouvez utiliser ce modèle comme modèle de réponse de méthode, ce qui s’avère nécessaire quand vous générez un kit SDK fortement typé pour l’API. Cela entraîne la conversion (cast) de la sortie en une classe appropriée en Java ou Objective-C.

{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "PhotosOutputModel", "type": "object", "properties": { "photos": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "photographedBy": { "type": "string" }, "title": { "type": "string" }, "ispublic": { "type": "boolean" }, "isfriend": { "type": "boolean" }, "isfamily": { "type": "boolean" } } } } } }

Le point de terminaison d'intégration peut ne pas répondre par une réponse conforme à la structure de données de ce modèle. Par exemple, la réponse d'intégration peut ressembler à ce qui suit :

"photos": [ { "id": "12345678901", "photographedBy": "Saanvi Sarkar", "title": "Sample photo 1", "description": "My sample photo 1", "public": true, "friend": false, "family": false }, { "id": "23456789012", "photographedBy": "Richard Roe", "title": "Sample photo 2", "description": "My sample photo 1", "public": true, "friend": false, "family": false } ] }

L'exemple de modèle de mappage suivant transforme les données de réponse d'intégration dans le format attendu par la réponse de méthode :

#set($inputRoot = $input.path('$')) { "photos": [ #foreach($elem in $inputRoot.photos.photo) { "id": "$elem.id", "photographedBy": "$elem.photographer_first_name $elem.photographer_last_name", "title": "$elem.title", "ispublic": $elem.public, "isfriend": $elem.friend, "isfamily": $elem.family }#if($foreach.hasNext),#end #end ] }

L'exemple suivant montre les données de sortie de la transformation :

{ "photos": [ { "id": "12345678901", "photographedBy": "Saanvi Sarkar", "title": "Sample photo 1", "ispublic": true, "isfriend": false, "isfamily": false }, { "id": "23456789012", "photographedBy": "Richard Roe", "title": "Sample photo 2", "ispublic": true, "isfriend": false, "isfamily": false } ] }

Ces données sont envoyées à la réponse de la méthode, puis renvoyées au client.

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.