Configurazione delle mappature dei dati di richiesta e di risposta tramite la console 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à.

Configurazione delle mappature dei dati di richiesta e di risposta tramite la console API Gateway

Per utilizzare la console API Gateway per definire la risposta/richiesta di integrazione dell'API, segui queste istruzioni.

Nota

Queste istruzioni presuppongono che sia già stata completata la procedura in Configurazione di una richiesta di integrazione API tramite la console API Gateway.

  1. Nel riquadro Risorse, scegli il tuo metodo.

  2. Nella scheda Richiesta di integrazione scegli Modifica in Impostazioni della richiesta di integrazione.

  3. Scegliete un'opzione per Request body passthrough per configurare in che modo il corpo della richiesta del metodo di un tipo di contenuto non mappato verrà passato attraverso la richiesta di integrazione senza trasformazione alla funzione Lambda, al proxy HTTP o al proxy di servizio. AWS Sono disponibili tre opzioni:

    • Seleziona Quando nessun modello corrisponde all'intestazione Content-Type della richiesta se vuoi che il corpo della richiesta di metodo venga passato attraverso la richiesta di integrazione al back-end senza trasformazione quando il tipo di contenuto della richiesta di metodo non corrisponde a nessuno dei tipi di contenuto associati ai modelli di mappatura, come illustrato nella prossima fase.

      Nota

      Durante la chiamata all'API di API Gateway, scegliere questa opzione impostando WHEN_NO_MATCH come valore della proprietà passthroughBehavior nella risorsa Integration.

    • Selezionare When there are no templates defined (recommended) (Quando non ci sono modelli definiti (consigliato)) se di desidera che il corpo della richiesta di metodo venga passato attraverso la richiesta di integrazione al back-end senza trasformazione quando nella richiesta di integrazione non è stato definito un modello di mappatura. Se viene definito un modello al momento della selezione di questa opzione, la richiesta di metodo di un tipo di contenuto non mappato sarà rifiutata con la risposta Tipo di supporto non supportato HTTP 415.

      Nota

      Durante la chiamata all'API di API Gateway, scegliere questa opzione impostando WHEN_NO_TEMPLATE come valore della proprietà passthroughBehavior nella risorsa Integration.

    • Selezionare Never (Mai) se non si desidera che la richiesta di metodo venga passata quando il tipo di contenuto della richiesta di metodo non corrisponde a nessuno dei tipi di contenuto associati ai modelli di mappatura definiti nella richiesta di integrazione o quando nessun modello di mappatura viene definito nella richiesta di integrazione. La richiesta di metodo di un tipo di contenuto non mappato sarà rifiutata con la risposta Tipo di supporto non supportato HTTP 415.

      Nota

      Durante la chiamata all'API di API Gateway, scegliere questa opzione impostando NEVER come valore della proprietà passthroughBehavior nella risorsa Integration.

    Per ulteriori informazioni sui comportamenti passthrough di integrazione, consulta Comportamenti passthrough di integrazione.

  4. Per un proxy HTTP o un proxy di AWS servizio, per associare un parametro path, un parametro della stringa di query o un parametro di intestazione definito nella richiesta di integrazione con un parametro path, un parametro della stringa di query o un parametro di intestazione corrispondente nella richiesta del metodo del proxy HTTP o del proxy di AWS servizio, procedi come segue:

    1. Seleziona rispettivamente Parametri del percorso URL, Parametri della stringa di query URL o Intestazioni HTTP, quindi scegli rispettivamente Aggiungi percorso, Aggiungi stringa di query o Aggiungi intestazione.

    2. Per Nome, digitate il nome del parametro path, del parametro della stringa di query o del parametro di intestazione nel proxy HTTP o AWS nel proxy di servizio.

    3. Per Mappato da immetti il valore della mappatura del parametro di percorso, del parametro di stringa di query o del parametro di intestazione. Utilizza uno dei seguenti formati:

      • method.request.path.parameter-name per un parametro di percorso denominato parameter-name in base alla definizione presente nella pagina Richiesta metodo.

      • method.request.querystring.parameter-name per un parametro di stringa di query denominato parameter-name in base alla definizione presente nella pagina Richiesta metodo.

      • method.request.multivaluequerystring.parameter-name per un parametro di stringa di query multi-valore denominato parameter-name in base alla definizione presente nella pagina Richiesta metodo.

      • method.request.header.parameter-name per un parametro di intestazione denominato parameter-name in base alla definizione presente nella pagina Richiesta metodo.

        In alternativa, puoi impostare un valore letterale della stringa (inserito in una coppia di virgolette singole) su un'intestazione di integrazione.

      • method.request.multivalueheader.parameter-name per un parametro di intestazione multi-valore denominato parameter-name in base alla definizione presente nella pagina Richiesta metodo.

    4. Per aggiungere un altro parametro, scegli il pulsante Aggiungi.

  5. Per aggiungere un modello di mappatura, scegli Modelli di mappatura.

  6. Per definire un modello di mappatura per una richiesta in ingresso, scegli Aggiungi modello di mappatura. Per Tipo di contenuto immetti un tipo di contenuto (ad esempio, application/json). Quindi, inserisci il modello di mappatura. Per ulteriori informazioni, consulta modelli di mappatura per API REST.

  7. Seleziona Save (Salva.

  8. Puoi mappare una risposta di integrazione dal back-end a una risposta di metodo dell'API restituita all'app che esegue la chiamata. Questo significa restituire al client intestazioni di riposta selezionate tra quelle disponibili dal back-end, trasformando il formato dei dati del payload della risposta di back-end in un formato specificato dall'API. Puoi specificare la mappatura configurando Risposta metodo e Risposte di integrazione.

    Per fare in modo che il metodo riceva un formato di dati di risposta personalizzato basato sul codice di stato HTTP restituito dalla funzione Lambda, dal proxy HTTP o dal proxy di AWS servizio, procedi come segue:

    1. Scegli Risposte di integrazione. Scegli Modifica in Predefinito - Risposta per specificare le impostazioni di un codice di risposta HTTP 200 dal metodo oppure seleziona Crea risposta per specificare le impostazioni di qualsiasi altro codice di stato di risposta HTTP dal metodo.

    2. Per Lambda error regex (per una funzione Lambda) o regex di stato HTTP (per un proxy HTTP o proxy di AWS servizio), inserisci un'espressione regolare per specificare quali stringhe di errore della funzione Lambda (per una funzione Lambda) o codici di stato di risposta HTTP (per un proxy HTTP o proxy di servizio) vengono mappate a questa mappatura di output. AWS Ad esempio, per mappare tutti i codici di stato delle risposte HTTP 2xx da un proxy HTTP a questa mappatura di output, digitare "2\d{2}" per HTTP status regex (Regex stato HTTP). Per restituire un messaggio di errore contenente "Invalid Request" da una funzione Lambda a una risposta 400 Bad Request, digita ".*Invalid request.*" per Espressione regolare errore Lambda. Per restituire invece 400 Bad Request per tutti i messaggi di errore non mappati da Lambda, immetti "(\n|.)+" in Espressione regolare errore Lambda. Quest'ultima espressione regolare può essere utilizzata per la risposta di errore predefinita di un'API.

      Nota

      API Gateway usa le espressioni regolari basate sullo stile del modello Java per la mappatura della risposta. Per ulteriori informazioni, consulta Pattern nella documentazione Oracle.

      I modelli di errore vengono confrontati con la stringa intera della proprietà errorMessage nella risposta Lambda, popolata da callback(errorMessage) in Node.js o da throw new MyException(errorMessage) in Java. Inoltre, i caratteri con escape sono senza escape prima che venga applicata l'espressione regolare.

      Se si utilizza "+" come modello di selezione per filtrare le risposte, considera che potrebbe non corrispondere a una risposta contenente un carattere di nuova riga ("\n").

    3. Se abilitato, in Stato risposta metodo scegli il codice di stato della risposta HTTP definito nella pagina Risposta metodo.

    4. In Mappature intestazioni, specifica un valore di mappatura per ogni intestazione definita per il codice di stato della risposta HTTP nella pagina Risposta metodo. Per Mapping valore (Valore mappatura), utilizzare uno dei seguenti formati:

      • integration.response.multivalueheaders.header-name dove header-name è il nome di un'intestazione di risposta multi-valore del back-end.

        Ad esempio, per restituire l'intestazione Date della risposta del back-end come un'intestazione Timestamp della risposta del metodo API, la colonna Response header (Intestazione della risposta) conterrà una voce Timestamp e il valore di Mapping value (Valore di mappatura) associato deve essere impostato su integration.response.multivalueheaders.Date.

      • integration.response.header.header-name dove header-name è il nome di un'intestazione di risposta a valore singolo del back-end.

        Ad esempio, per restituire l'intestazione Date della risposta del back-end come un'intestazione Timestamp della risposta del metodo API, la colonna Response header (Intestazione della risposta) conterrà una voce Timestamp e il valore di Mapping value (Valore di mappatura) associato deve essere impostato su integration.response.header.Date.

    5. Scegli Modelli di mappatura, quindi seleziona Aggiungi modello di mappatura. Nella casella Tipo di contenuto, inserisci il tipo di contenuto dei dati che verranno passati dalla funzione Lambda, dal proxy HTTP o dal proxy di AWS servizio al metodo. Quindi, inserisci il modello di mappatura. Per ulteriori informazioni, consulta modelli di mappatura per API REST.

    6. Seleziona Save (Salva.