Convalida delle richieste per API WebSocket in Gateway API - 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à.

Convalida delle richieste per API WebSocket in Gateway API

Puoi configurare API Gateway per eseguire la convalida su una route prima di passare alla richiesta di integrazione. Se la convalida non riesce, API Gateway non completa la richiesta senza chiamare il back-end, invia una risposta del gateway "Corpo della richiesta non valido" al client e pubblica i risultati della convalida in CloudWatch Logs. 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 si definisce un instradamento per un'API WebSocket, è possibile 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 REST APIs.

Configurazione della convalida delle richieste tramite la console Gateway Amazon API

L'esempio seguente mostra come configurare la convalida delle richieste per un instradamento.

Innanzitutto, si crea un modello e quindi un instradamento. Successivamente, si configura la convalida delle richieste sull'instradamento appena creato. Infine, si implementa e si esegue il test dell'API. Per completare questo tutorial, è necessaria un'API WebSocket con $request.body.action come espressione di selezione dell'instradamento e un endpoint di integrazione per il nuovo instradamento.

Per la connessione all'API è inoltre necessario wscat. Per ulteriori informazioni, consultare 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'API WebSocket.

  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" } } }

    Per questo modello è necessario che la richiesta contenga un indirizzo e-mail.

  8. Seleziona Salva.

In questo passaggio si crea un instradamento per l'API WebSocket.

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

  2. Selezionare Create Route (Crea route).

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

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

  5. Selezionare Create Route (Crea route).

In questo passaggio si imposta la convalida delle richieste per l'instradamento sendMessage.

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

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

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

  3. Scegli Aggiungi modello di richiesta.

  4. Per Chiave modello inserisci email.

  5. Per Modello scegli emailModel.

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

    Nota

    Se Gateway API non riesce ad abbinare l'espressione di selezione del modello a una chiave del modello, viene selezionato il modello $default. Se non esiste un modello $default, la convalida non va a buon fine. Per le API di produzione, si consiglia di creare un modello $default.

  6. Scegli Save changes (Salva modifiche).

In questo passaggio si implementa e si testa l'API.

Per distribuire e testare l'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. Copiare l'URL WebSocket dell'API. L'URL dovrebbe essere del tipo wss://abcdef123.execute-api.us-east-2.amazonaws.com/production.

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

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

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

    Gateway API non riuscirà a completare la richiesta.

    Utilizza il seguente comando per inviare una richiesta valida all'API.

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