Richiedi la convalida delle API in WebSocket 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à.

Richiedi la convalida delle API in WebSocket API Gateway

Puoi configurare API Gateway per eseguire la convalida su una route prima di passare alla richiesta di integrazione. Se la convalida fallisce, API Gateway fallisce la richiesta senza chiamare il backend, invia una risposta gateway «Bad request body» al client e pubblica i risultati della convalida in Logs. CloudWatch L'utilizzo della convalida in questo modo riduce le chiamate non necessarie al back-end dell'API.

Espressioni di selezione del modello

Puoi utilizzare un'espressione di selezione del modello per convalidare dinamicamente le richieste all'interno della stessa route. La convalida del modello si verifica se si fornisce un'espressione di selezione del modello per integrazioni proxy o non proxy. Potrebbe essere necessario definire il modello $default come un fallback quando non viene trovato alcun modello corrispondente. Se non esiste un modello corrispondente e $default non è definito, la convalida non va a buon fine. L'aspetto dell'espressione di selezione è simile a Route.ModelSelectionExpression e valuta la chiave per Route.RequestModels.

Quando definisci un percorso per un' WebSocket API, puoi facoltativamente specificare un'espressione di selezione del modello. Questa espressione viene valutata per selezionare il modello da utilizzare per la convalida del corpo quando si riceve una richiesta. L'espressione restituisce una delle voci presenti nel di una route requestmodels.

Un modello viene espresso come schema JSON e descrive la struttura dati del corpo della richiesta. La natura di queste espressioni di selezione consente di scegliere in modo dinamico il modello in base al quale eseguire la convalida in fase di runtime per una determinata route. Per informazioni su come creare un modello, consulta Modelli di dati per le API REST.

Configurazione della convalida delle richieste tramite la console Gateway Amazon API

L'esempio seguente mostra come impostare la convalida delle richieste su un percorso.

Innanzitutto, crei un modello e poi crei un percorso. Successivamente, configuri la convalida della richiesta sulla rotta appena creata. Infine, implementate e testate la vostra API. Per completare questo tutorial, hai bisogno di un' WebSocket API $request.body.action come espressione di selezione del percorso e di un endpoint di integrazione per la tua nuova rotta.

Per la connessione all'API è inoltre necessario wscat. Per ulteriori informazioni, consulta Utilizzalo wscat per connetterti a un' WebSocket API e inviarle messaggi.

Creazione di un modello
  1. Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.

  2. Scegli un' WebSocket API.

  3. Nel riquadro di navigazione principale seleziona Modelli.

  4. Scegli Crea modello.

  5. Per Nome, immetti emailModel.

  6. Per Tipo di contenuto inserisci application/json.

  7. Per Schema modello immetti il seguente modello:

    { "$schema": "http://json-schema.org/draft-04/schema#", "type" : "object", "required" : [ "address"], "properties" : { "address": { "type": "string" } } }

    Questo modello richiede che la richiesta contenga un indirizzo email.

  8. Selezionare Salva.

In questo passaggio, crei un percorso per la tua WebSocket API.

Per creare una route
  1. Nel pannello di navigazione principale, scegli Percorsi.

  2. Selezionare Create Route (Crea route).

  3. Per Route key (Chiave routing), inserire sendMessage.

  4. Scegli un tipo di integrazione e specifica un endpoint di integrazione. Per ulteriori informazioni, consulta Integrazioni per WebSocket API in API Gateway.

  5. Selezionare Create Route (Crea route).

In questo passaggio, si imposta la convalida della richiesta per il sendMessage percorso.

Per impostare la convalida della richiesta
  1. Nella scheda Richiesta di percorso, in Impostazioni di richiesta di percorso, scegli Modifica.

  2. Per Espressione di selezione del modello, immettete${request.body.messageType}.

    API Gateway utilizza la messageType proprietà per convalidare la richiesta in arrivo.

  3. Scegli Aggiungi modello di richiesta.

  4. Per Model key, inserisciemail.

  5. Per Modello, scegli EmailModel.

    API Gateway convalida i messaggi in arrivo con la messageType proprietà impostata su email rispetto a questo modello.

    Nota

    Se API Gateway non è in grado di abbinare l'espressione di selezione del modello a una chiave del modello, seleziona il $default modello. Se non esiste un $default modello, la convalida fallisce. Per le API di produzione, ti consigliamo di creare un $default modello.

  6. Seleziona Salvataggio delle modifiche.

In questa fase, distribuisci e testerai la tua API.

Per distribuire e testare la tua API
  1. Seleziona Deploy API (Distribuisci API).

  2. Scegliere la fase desiderata dall'elenco a discesa oppure immettere il nome di una nuova fase.

  3. Seleziona Deploy (Implementa).

  4. Nel riquadro di navigazione principale scegli Fasi.

  5. Copia l' WebSocket URL della tua API. L'URL dovrebbe essere del tipo wss://abcdef123.execute-api.us-east-2.amazonaws.com/production.

  6. Apri un nuovo terminale ed esegui il wscat comando con i seguenti parametri.

    wscat -c wss://abcdef123.execute-api.us-west-2.amazonaws.com/production
    Connected (press CTRL+C to quit)
  7. Usa il seguente comando per testare la tua API.

    {"action": "sendMessage", "messageType": "email"}
    {"message": "Invalid request body", "connectionId":"ABCD1=234", "requestId":"EFGH="}

    API Gateway non riuscirà a completare la richiesta.

    Usa il comando successivo per inviare una richiesta valida alla tua API.

    {"action": "sendMessage", "messageType": "email", "address": "mary_major@example.com"}