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à.
Puoi utilizzare le trasformazioni dei modelli di mappatura per sovrascrivere qualsiasi tipo di parametro di richiesta, intestazione di risposta o codice di stato della risposta. Si utilizza un modello di mappatura per effettuare le seguenti operazioni:
-
Eseguite le many-to-one mappature dei parametri
-
Sostituire i parametri dopo l'applicazione delle mappature standard di Gateway API
-
Mappare i parametri in modo condizionale in base al contenuto del corpo o ad altri valori dei parametri
-
Creare nuovi parametri in modo programmatico
-
Sostituire i codici di stato restituiti dall'endpoint di integrazione
Le sovrascritture sono finali. Una sovrascrittura può essere applicata a ciascun parametro una sola volta. Se si prova a sovrascrivere lo stesso parametro più volte, Gateway API restituisce una risposta 5XX
. Se occorre sovrascrivere lo stesso parametro più volte in tutto il modello, ti consigliamo di creare una variabile e applicare la sovrascrittura alla fine del modello. Il modello viene applicato solo dopo che l'intero modello è stato analizzato.
Esempio 1: sovrascrivi il codice di stato basato sul corpo di integrazione
L'esempio seguente utilizza l'API di esempio per sovrascrivere il codice di stato in base al corpo della risposta di integrazione.
Per sovrascrivere un codice di stato basato sul corpo della risposta di integrazione
Accedi alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.
-
Seleziona Create API (Crea API).
-
Per l'API REST, scegli Build.
-
Per i dettagli dell'API, scegli API di esempio.
-
Seleziona Create API (Crea API).
API Gateway crea un esempio di API per un negozio di animali. Per recuperare informazioni su un animale domestico, si utilizza il metodo API request of
GET /pets/{petId}
, dove{petId}
è un parametro path corrispondente a un numero ID per un animale domestico.In questo esempio, sostituite il codice di risposta del
GET
metodo400
quando viene rilevata una condizione di errore. -
Nella struttura Risorse, scegli il metodo
GET
in/{petId}
. -
Innanzitutto, testate l'attuale implementazione dell'API.
Seleziona la scheda Test. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda.
-
Per petId immetti
-1
, quindi seleziona Test.Il corpo della risposta indica un out-of-range errore:
{ "errors": [ { "key": "GetPetRequest.petId", "message": "The value is out of range." } ] }
Inoltre, l'ultima riga in Logs termina con:
Method completed with status: 200
.L'integrazione è stata completata con successo, ma si è verificato un errore. Ora sovrascriverai il codice di stato in base alla risposta di integrazione.
-
Nella scheda Risposta di integrazione scegli Modifica per Predefinito - Risposta.
-
Scegli Modelli di mappatura.
-
Scegliere Add mapping template (Aggiungi modello di mappatura).
-
Per Tipo di contenuto inserisci
application/json
. -
Per Corpo del modello inserisci quanto segue:
#set($inputRoot = $input.path('$')) $input.json("$") #if($inputRoot.toString().contains("error")) #set($context.responseOverride.status = 400) #end
Questo modello di mappatura utilizza la
$context.responseOverride.status
variabile per sovrascrivere il codice di stato400
se la risposta di integrazione contiene la stringa.error
-
Seleziona Salva.
-
Seleziona la scheda Test.
-
Per petId immetti
-1
. -
Nei risultati, il Response Body indica un out-of-range errore:
{ "errors": [ { "key": "GetPetRequest.petId", "message": "The value is out of range." } ] }
Tuttavia, l'ultima riga in Logs ora termina con:
Method completed with status: 400
.
Esempio 2: sovrascrivi l'intestazione della richiesta e crea nuove intestazioni
L'esempio seguente utilizza l'API di esempio per sovrascrivere l'intestazione della richiesta e creare nuove intestazioni.
Per sovrascrivere l'intestazione di richiesta di un metodo creando una nuova intestazione
Accedi alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.
-
Scegli l'API di esempio che hai creato nel tutorial precedente. Il nome dell'API dovrebbe essere PetStore.
-
Nella struttura Risorse, scegli il metodo
GET
in/pet
. -
Nella scheda Richiesta metodo scegli Modifica in Impostazioni della richiesta del metodo.
-
Scegli Intestazioni di richiesta HTTP, quindi seleziona Aggiungi intestazione.
-
Per Nome, immetti
header1
. -
Scegli Aggiungi intestazione, quindi crea una seconda intestazione chiamata
header2
. -
Seleziona Salva.
Ora, combini queste intestazioni in un unico valore di intestazione utilizzando un modello di mappatura.
-
Nella scheda Richiesta di integrazione seleziona Modifica per Impostazioni della richiesta di integrazione.
-
Per Richiesta corpo passthrough scegli Quando non ci sono modelli definiti (consigliato).
-
Scegli Modelli di mappatura e procedi come indicato di seguito:
-
Scegliere Add mapping template (Aggiungi modello di mappatura).
-
Per Tipo di contenuto inserisci
application/json
. -
Per Corpo del modello inserisci quanto segue:
#set($header1Override = "pets") #set($header3Value = "$input.params('header1')$input.params('header2')") $input.json("$") #set($context.requestOverride.header.header3 = $header3Value) #set($context.requestOverride.header.header1 = $header1Override) #set($context.requestOverride.header.multivalueheader=[$header1Override, $header3Value])
Questo modello di mappatura sostituisce
header1
la stringapets
e crea un'intestazione multivalore chiamata combine and.$header3Value
header1
header2
-
-
Seleziona Salva.
-
Seleziona la scheda Test.
-
In Headers, copia il codice seguente:
header1:header1Val header2:header2Val
-
Scegli Test (Esegui test).
Nei registri, dovresti vedere una voce che include questo testo:
Endpoint request headers: {header3=header1Valheader2Val, header2=header2Val, header1=pets, x-amzn-apigateway-api-id=
api-id
, Accept=application/json, multivalueheader=pets,header1Valheader2Val}
Per utilizzare l'override di un modello di mappatura, aggiungi una o più delle seguenti variabili. $context
Per un elenco di $context
variabili, vedere. Variabili di contesto per le trasformazioni dei dati