Modelli di mappatura per REST APIs - Amazon API Gateway

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) e applicato al payload utilizzando. JSONPath

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.

Esempio di modello di mappatura
  1. La $inputRoot variabile rappresenta l'oggetto principale nei JSON dati originali della sezione precedente. Le direttive iniziano con il simbolo #.

  2. Un foreach ciclo scorre attraverso ogni oggetto nei JSON dati originali.

  3. La descrizione è una concatenazione dei dati del Pet id e type dei dati originali. JSON

  4. askingPricepriceè 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:

  1. Nella riga 1, la $inputRoot variabile rappresenta l'oggetto principale nei JSON dati originali della sezione precedente. Le direttive iniziano con il simbolo #.

  2. Alla riga 3, un foreach ciclo scorre attraverso ogni oggetto nei JSON dati originali.

  3. Alla riga 5, description c'è una concatenazione dei dati Pet id e dei dati originalitype. JSON

  4. Alla riga 6, askingPrice price è il prezzo in base ai dati originali. JSON

Per ulteriori informazioni sul Velocity Template Language, consulta Apache Velocity - Reference. VTL Per ulteriori informazioni suJSONPath, vedere JSONPath - for. XPath JSON

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.