Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Modelli di mappatura per REST APIs
In API Gateway, API la richiesta o la risposta di un metodo può richiedere un payload in un formato diverso dalla richiesta o dalla risposta di integrazione.
È possibile trasformare i tuoi dati con le seguenti finalità:
Abbina il payload a un formato specificatoAPI.
Sostituisci i parametri API di richiesta e risposta e i codici di stato di an.
Restituire le intestazioni di risposta selezionate dal client.
Associa i parametri di percorso, i parametri della stringa di query o i parametri di intestazione nella richiesta del metodo del HTTP proxy o Servizio AWS del proxy.
Seleziona i dati da inviare utilizzando l'integrazione Servizi AWS, ad esempio le funzioni o gli endpoint di Amazon DynamoDB o Lambda. HTTP
È possibile usare modelli di mappatura per trasformare i dati. Un modello di mappatura è uno script espresso in Velocity Template Language (VTL)
Questa sezione descrive le informazioni concettuali relative ai modelli di mappatura. Per istruzioni sulla creazione di un modello di mappatura per un API Gateway RESTAPI, vedere. Imposta le trasformazioni dei dati in API Gateway
Esempio di modello di mappatura
L'esempio seguente è l'input dei dati in una richiesta di integrazione.
[ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]
L'esempio seguente è un modello di mappatura per trasformare i dati della richiesta di integrazione.
#set($inputRoot = $input.path('$')) [ #foreach($elem in $inputRoot) { "description" : "Item $elem.id is a $elem.type.", "askingPrice" : $elem.price }#if($foreach.hasNext),#end #end ]
L'esempio seguente mostra i dati di output della trasformazione.
[ { "description" : "Item 1 is a dog.", "askingPrice" : 249.99 }, { "description" : "Item 2 is a cat.", "askingPrice" : 124.99 }, { "description" : "Item 3 is a fish.", "askingPrice" : 0.99 } ]
Il diagramma seguente mostra i dettagli di questo modello di mappatura.
La
$inputRoot
variabile rappresenta l'oggetto principale nei JSON dati originali della sezione precedente. Le direttive iniziano con il simbolo#
.Un
foreach
ciclo scorre attraverso ogni oggetto nei JSON dati originali.La descrizione è una concatenazione dei dati del Pet
id
etype
dei dati originali. JSONaskingPrice
price
è il prezzo indicato nei dati originali. JSON
1 #set($inputRoot = $input.path('$')) 2 [ 3 #foreach($elem in $inputRoot) 4 { 5 "description" : "Item $elem.id is a $elem.type.", 6 "askingPrice" : $elem.price 7 }#if($foreach.hasNext),#end 8 #end 9 ]
In questo modello di mappatura:
-
Nella riga 1, la
$inputRoot
variabile rappresenta l'oggetto principale nei JSON dati originali della sezione precedente. Le direttive iniziano con il simbolo#
. -
Alla riga 3, un
foreach
ciclo scorre attraverso ogni oggetto nei JSON dati originali. -
Alla riga 5,
description
c'è una concatenazione dei dati Petid
e dei dati originalitype
. JSON -
Alla riga 6,
askingPrice
price
è il prezzo in base ai dati originali. JSON
Per ulteriori informazioni sul Velocity Template Language, consulta Apache Velocity
Il modello di mappatura presuppone che i dati sottostanti appartengano a un JSON oggetto. Non è richiesta la definizione di un modello per i dati. Tuttavia, un modello per i dati di output consente di restituire i dati precedenti come oggetto specifico del linguaggio. Per ulteriori informazioni, consulta Modelli di dati per REST APIs.
Esempi di modelli di mappatura complessi
Puoi anche creare modelli di mappatura più complessi. L'esempio seguente mostra la concatenazione dei riferimenti e il limite di 100 per determinare se un animale domestico è conveniente.
L'esempio seguente fornisce dati di input per una richiesta di integrazione.
[ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]
L'esempio seguente è un modello di mappatura per trasformare i dati della richiesta di integrazione.
#set($inputRoot = $input.path('$')) #set($cheap = 100) [ #foreach($elem in $inputRoot) { #set($name = "${elem.type}number$elem.id") "name" : $name, "description" : "Item $elem.id is a $elem.type.", #if($elem.price > $cheap )#set ($afford = 'too much!') #{else}#set ($afford = $elem.price)#end "askingPrice" : $afford }#if($foreach.hasNext),#end #end ]
L'esempio seguente mostra i dati di output della trasformazione.
[ { "name" : dognumber1, "description" : "Item 1 is a dog.", "askingPrice" : too much! }, { "name" : catnumber2, "description" : "Item 2 is a cat.", "askingPrice" : too much! }, { "name" : fishnumber3, "description" : "Item 3 is a fish.", "askingPrice" : 0.99 } ]
Puoi anche vedere modelli di dati più complicati. Per informazioni, consulta Esempi di modelli di dati e modelli di mappatura per Gateway API.