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à.
Riferimento alla mappatura dei dati di API richiesta e risposta di Amazon API Gateway
Questa sezione spiega come impostare le mappature dei dati dai dati API di una richiesta di metodo, inclusi altri dati archiviati in context, o utilvariabili stage, ai parametri di richiesta di integrazione corrispondenti e dai dati di risposta di integrazione, inclusi gli altri dati, ai parametri di risposta del metodo. I dati della richiesta del metodo includono i parametri di richiesta (percorso, stringa di query, intestazioni) e il corpo. I dati della risposta di integrazione includono i parametri di risposta (intestazioni) e il corpo. Per ulteriori informazioni sull'uso delle variabili di fase, consulta APIRiferimento alle variabili di fase Gateway per REST APIs in Gateway API.
Argomenti
Come mappare i dati di richiesta di metodi ai parametri di richiesta di integrazione
I parametri di richiesta di integrazione, sotto forma di variabili di percorso, stringhe o intestazioni di query, possono essere mappati dal payload e da qualsiasi parametro di richiesta di metodo definito.
Nella tabella seguente,
è il nome di un parametro di richiesta del metodo del tipo di parametro specificato. Deve corrispondere all'espressione regolare PARAM_NAME
'^[a-zA-Z0-9._$-]+$]'
. Deve essere stato definito prima che possa essere referenziato.
è un'JSONPathespressione per un JSON campo del corpo di una richiesta o di una risposta.JSONPath_EXPRESSION
Nota
Il prefisso "$"
viene omesso in questa sintassi.
Fonte di dati mappata |
Espressione di mappatura |
---|---|
Percorso della richiesta di metodo | method.request.path. |
Stringa di query della richiesta di metodo | method.request.querystring. |
Stringa di query multi-valore della richiesta del metodo | method.request.multivaluequerystring. |
Intestazione della richiesta di metodo | method.request.header. |
Intestazione multi-valore della richiesta di metodo | method.request.multivalueheader. |
Corpo della richiesta di metodo | method.request.body |
Corpo della richiesta del metodo () JsonPath | method.request.body. . |
Variabili di fase | stageVariables. |
Variabili di contesto | context. che deve essere una delle variabili di contesto supportate. |
Valore statico | . La STATIC_VALUE è una stringa letterale e deve essere racchiusa tra virgolette singole. |
Esempio Mappature dal parametro di richiesta del metodo in Open API
L'esempio seguente mostra uno API snippet Open che mappa:
-
l'intestazione della richiesta del metodo,
methodRequestHeaderParam
, al parametro di percorsointegrationPathParam
della richiesta di integrazione -
la stringa di query multi-valore della richiesta del metodo,
methodRequestQueryParam
, alla stringa di query della richiesta di integrazione,integrationQueryParam
... "requestParameters" : { "integration.request.path.integrationPathParam" : "method.request.header.methodRequestHeaderParam", "integration.request.querystring.integrationQueryParam" : "method.request.multivaluequerystring.methodRequestQueryParam" } ...
I parametri della richiesta di integrazione possono anche essere mappati dai campi del corpo della JSON richiesta utilizzando un'espressione. JSONPath
Esempio Mappatura dal corpo della richiesta del metodo in Open API
L'esempio seguente mostra uno API snippet Open che mappa 1) il corpo della richiesta del metodo all'intestazione della richiesta di integrazione, denominatabody-header
, e 2) un JSON campo del corpo, come espresso da un'JSONespressione (petstore.pets[0].name
senza il prefisso). $.
... "requestParameters" : { "integration.request.header.body-header" : "method.request.body", "integration.request.path.pet-name" : "method.request.body.petstore.pets[0].name", } ...
Mappa i dati delle risposte di integrazione alle intestazioni delle risposte di metodo
I parametri delle intestazioni delle risposte di metodo possono essere mappati da qualsiasi intestazione o corpo della risposta di integrazione, variabili $context
o valori statici. La tabella seguente descrive le espressioni di mappatura dell'intestazione della risposta del metodo.
Origine dati mappata | Espressione di mappatura |
---|---|
Intestazione della risposta di integrazione | integration.response.header. |
Intestazione della risposta di integrazione | integration.response.multivalueheader. |
Corpo della risposta di integrazione | integration.response.body |
Corpo della risposta di integrazione () JsonPath | integration.response.body. |
Variabile di fase | stageVariables. |
Variabile di contesto | context. che deve essere una delle variabili di contesto supportate. |
Valore statico | . La STATIC_VALUE è una stringa letterale e deve essere racchiusa tra virgolette singole. |
Esempio Mappatura dei dati dalla risposta di integrazione in Open API
L'esempio seguente mostra uno API snippet Open che mappa 1) il JSONPath campo della risposta di integrazioneredirect.url
, nell'intestazione della risposta alla richiesta e 2) l'location
intestazione della risposta di integrazione all'x-app-id
intestazione della risposta del metodo. id
... "responseParameters" : { "method.response.header.location" : "integration.response.body.redirect.url", "method.response.header.id" : "integration.response.header.x-app-id", "method.response.header.items" : "integration.response.multivalueheader.item", } ...
Mappa i payload di risposta e di richiesta tra metodo e integrazione
APIGateway utilizza il motore Velocity Template Language (VTL)
I VTL modelli utilizzano JSONPath espressioni, altri parametri come contesti di chiamata e variabili di fase e funzioni di utilità per elaborare i dati. JSON
Se viene definito un modello per descrivere la struttura dei dati di un payload, API Gateway può utilizzare il modello per generare un modello di mappatura scheletrica per una richiesta di integrazione o una risposta di integrazione. È possibile utilizzare il modello scheletrico come ausilio per personalizzare ed espandere lo script di mappatura. VTL Tuttavia, puoi creare un nuovo modello di mappatura senza definire un modello per la struttura dati del payload.
Seleziona un modello di mappatura VTL
APIGateway utilizza la seguente logica per selezionare un modello di mappatura, in Velocity Template Language (VTL)
Per un payload di richiesta, API Gateway utilizza il valore di Content-Type
intestazione della richiesta come chiave per selezionare il modello di mappatura per il payload della richiesta. Per un payload di risposta, API Gateway utilizza il valore di Accept
intestazione della richiesta in entrata come chiave per selezionare il modello di mappatura.
Quando l'Content-Type
intestazione è assente nella richiesta, API Gateway presume che il suo valore predefinito sia. application/json
Per tale richiesta, API Gateway utilizza application/json
come chiave predefinita per selezionare il modello di mappatura, se definito. Quando nessun modello corrisponde a questa chiave, API Gateway passa il payload a unmapped se la passthroughBehaviorproprietà è impostata su o. WHEN_NO_MATCH
WHEN_NO_TEMPLATES
Quando l'Accept
intestazione non è specificata nella richiesta, API Gateway presume che il suo valore predefinito sia. application/json
In questo caso, API Gateway seleziona un modello di mappatura esistente per mappare il payload application/json
di risposta. Se non è definito alcun modello perapplication/json
, API Gateway seleziona il primo modello esistente e lo utilizza come predefinito per mappare il payload di risposta. Analogamente, API Gateway utilizza il primo modello esistente quando il valore di Accept
intestazione specificato non corrisponde a nessuna chiave del modello esistente. Se non viene definito alcun modello, API Gateway passa semplicemente il payload di risposta tramite unmapped.
Ad esempio, supponiamo che un API abbia un application/json
modello definito per un payload di richiesta e abbia un application/xml
modello definito per il payload di risposta. Se il client imposta le intestazioni "Content-Type :
application/json"
e "Accept : application/xml"
nella richiesta, i payload di richiesta e di risposta verranno elaborati con i modelli di mappatura corrispondenti. Se l'intestazione Accept:application/xml
non è presente, verrà utilizzato il modello di mappatura application/xml
per mappare il payload della risposta. Al contrario, per restituire il payload di risposta non mappato, devi configurare un modello vuoto per application/json
.
Quando si seleziona un modello di mappatura, viene utilizzato solo il MIME tipo Content-Type
contenuto nelle intestazioni Accept
and. Ad esempio, un'intestazione di "Content-Type: application/json; charset=UTF-8"
avrà un modello di richiesta con la chiave application/json
selezionata.