Trasformazioni dei modelli di mappatura per REST APIs in API Gateway - 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à.

Trasformazioni dei modelli di mappatura per REST APIs in API Gateway

Una trasformazione del modello di mappatura utilizza un modello di mappatura per modificare la richiesta o la risposta di integrazione. Un modello di mappatura è uno script espresso in Velocity Template Language (VTL) e applicato a un payload utilizzando un codice basato sull'intestazione. JSONPath Content-type Si utilizzano i modelli di mappatura per le trasformazioni dei modelli di mappatura. Questa sezione descrive le informazioni concettuali relative ai modelli di mappatura.

Il diagramma seguente mostra il ciclo di vita della richiesta per una POST /pets risorsa che ha un'integrazione con un endpoint di integrazione. PetStore In questa API, un utente invia i dati su un animale domestico e l’endpoint di integrazione restituisce la tariffa di adozione associata all’animale domestico. In questo ciclo di vita della richiesta, le trasformazioni dei modelli di mappatura filtrano il corpo della richiesta all’endpoint di integrazione e il corpo della risposta dall’endpoint di integrazione.

Esempio di ciclo di vita della richiesta

Le sezioni seguenti illustrano il ciclo di vita della richiesta e della risposta.

Richiesta di metodo e richiesta di integrazione

Nell’esempio precedente, se il corpo della richiesta inviato alla richiesta di metodo è:

POST /pets HTTP/1.1 Host:abcd1234.us-west-2.amazonaws.com Content-type: application/json { "id": 1, "type": "dog", "Age": 11, }

Questo corpo della richiesta non è nel formato corretto per essere utilizzato dall’endpoint di integrazione, pertanto Gateway API esegue una trasformazione del modello di mappatura. Gateway API esegue solo una trasformazione del modello di mappatura perché esiste un modello di mappatura definito per Content-Type application/json. Se non si definisce un modello di mappatura per Content-Type, per impostazione predefinita, Gateway API passa il corpo all’endpoint di integrazione tramite la richiesta di integrazione. Per modificare questo comportamento, consultare Comportamento della richiesta del metodo per i payload senza modelli di mappatura per REST APIs in API Gateway.

Il seguente modello di mappatura trasforma i dati della richiesta di metodo nella richiesta di integrazione prima che vengano inviati all’endpoint di integrazione:

#set($inputRoot = $input.path('$')) { "dogId" : "dog_"$elem.id, "Age": $inputRoot.Age }
  1. La variabile $inputRoot rappresenta l'oggetto radice nei dati JSON originali della sezione precedente. Le direttive iniziano con il simbolo #.

  2. dog è una concatenazione di id dell’utente e di un valore di stringa.

  3. Age proviene dal corpo della richiesta di metodo.

Quindi, il seguente output viene inoltrato all’endpoint di integrazione:

{ "dogId" : "dog_1", "Age": 11 }

Risposta di integrazione e risposta di metodo

Dopo l’esito positivo della richiesta all’endpoint di integrazione, l’endpoint invia una risposta alla risposta di integrazione di Gateway API. L’esempio seguente indica i dati di output di un endpoint di integrazione:

{ "dogId" : "dog_1", "adoptionFee": 19.95, }

La risposta di metodo prevede un payload diverso da quello restituito dalla risposta di integrazione. Gateway API esegue una trasformazione del modello di mappatura. Gateway API esegue solo una trasformazione del modello di mappatura perché esiste un modello di mappatura definito per Content-Type application/json. Se non si definisce un modello di mappatura per Content-Type, per impostazione predefinita, Gateway API passa il corpo alla risposta di metodo tramite la risposta di integrazione. Per modificare questo comportamento, consultare Comportamento della richiesta del metodo per i payload senza modelli di mappatura per REST APIs in API Gateway.

#set($inputRoot = $input.path('$')) { "adoptionFee" : $inputRoot.adoptionFee, }

Il seguente output viene inviato alla risposta di metodo:

{"adoptionFee": 19.95}

L’esempio di trasformazione del modello di mappatura è completato. Se possibile, anziché utilizzare trasformazioni di modelli di mappatura, è consigliabile un’integrazione proxy per trasformare i dati. Per ulteriori informazioni, consulta Scegliere un tipo di integrazione API Gateway API.