

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Validierung für WebSocket APIs im API Gateway anfordern
<a name="websocket-api-request-validation"></a>

Sie können API Gateway so konfigurieren, dass die Validierung einer Routenanforderung durchgeführt wird, bevor Sie mit der Integrationsanforderung fortfahren. Wenn die Validierung fehlschlägt, schlägt API Gateway die Anfrage fehl, ohne Ihr Backend aufzurufen, sendet eine Gateway-Antwort „Bad Request Body“ an den Client und veröffentlicht die Validierungsergebnisse in CloudWatch Logs. Die Verwendung der Validierung auf diese Weise reduziert unnötige Aufrufe an Ihr API-Backend.

## Modell-Auswahlausdrücke
<a name="apigateway-websocket-api-model-selection-expressions"></a>

Sie können einen Modell-Auswahlausdruck verwenden, um Anforderungen innerhalb derselben Route dynamisch zu validieren. Die Modellvalidierung erfolgt, wenn Sie einen Modell-Auswahlausdruck für Proxy- oder Nicht-Proxy-Integrationen bereitstellen. Möglicherweise müssen Sie das `$default`-Modell als Fallback definieren, wenn kein passendes Modell gefunden wird. Wenn kein übereinstimmendes Modell vorhanden ist und `$default` nicht definiert ist, schlägt die Validierung fehl. Der Auswahlausdruck ähnelt `Route.ModelSelectionExpression` und wertet den Schlüssel für `Route.RequestModels` aus.

Wenn Sie eine Route für eine WebSocket API definieren, können Sie optional einen *Modellauswahlausdruck* angeben. Dieser Ausdruck wird zur Auswahl des Modells ausgewertet, das bei Eingang einer Anforderung für die Textvalidierung verwendet werden soll. Der Ausdruck wird auf einen der Einträge in den einer Route ausgewertet [https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-routes.html#apis-apiid-routes-prop-route-requestmodels](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-routes.html#apis-apiid-routes-prop-route-requestmodels).

Ein Modell wird als [JSON-Schema](https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-04) ausgedrückt und beschreibt die Datenstruktur des Anforderungstextes. Die Beschaffenheit dieses Auswahlausdrucks ermöglicht Ihnen, dynamisch das Modell auszuwählen, über das zur Laufzeit für eine bestimmte Route validiert werden soll. Weitere Informationen, wie Sie ein Modell erstellen können, finden Sie unter [Datenmodelle für REST APIs](models-mappings-models.md). 

## Einrichten der grundlegenden Anforderungsvalidierung über die API-Gateway-Konsole
<a name="apigateway-websocket-api-model-selection-expression-example"></a>

Im folgenden Beispiel wird gezeigt, wie Sie die Anforderungsvalidierung auf einer Route einrichten.

 Zuerst erstellen Sie ein Modell und dann eine Route. Als Nächstes konfigurieren Sie die Anforderungsvalidierung für die Route, die Sie gerade erstellt haben. Abschließend stellen Sie Ihre API bereit und testen sie. Um dieses Tutorial abzuschließen, benötigen Sie eine WebSocket API `$request.body.action` als Routenauswahlausdruck und einen Integrationsendpunkt für Ihre neue Route.

Sie benötigen außerdem `wscat`, um eine Verbindung zu Ihrer API herzustellen. Weitere Informationen finden Sie unter [Wird verwendet`wscat`, um eine Verbindung zu einer WebSocket API herzustellen und Nachrichten an diese zu senden](apigateway-how-to-call-websocket-api-wscat.md).

**So erstellen Sie ein Modell**

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie eine API aus. WebSocket 

1. Klicken Sie im Navigationsbereich auf **Models** (Modelle).

1. Wählen Sie **Modell erstellen** aus.

1. Geben Sie unter **Name** **emailModel** ein.

1. Geben Sie für **Content type** (Inhaltstyp) **application/json** ein.

1. Geben Sie für **Modellschema** Folgendes ein:

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

   Für dieses Modell muss die Anfrage eine E-Mail-Adresse enthalten.

1. Wählen Sie **Speichern**.

In diesem Schritt erstellen Sie eine Route für Ihre WebSocket API.

**So erstellen Sie eine Route**

1. Klicken Sie im Hauptnavigationsbereich auf **Routen**.

1. Wählen Sie **Create route (Route erstellen)** aus.

1. Geben Sie in **Route key** (Routenschlüssel) **sendMessage** ein.

1. Wählen Sie einen Integrationstyp und geben Sie einen Integrationsendpunkt an. Weitere Informationen finden Sie unter [Integrationen für das WebSocket APIs API Gateway](apigateway-websocket-api-integrations.md).

1. Wählen Sie **Create route (Route erstellen)** aus.

In diesem Schritt richten Sie die Anforderungsvalidierung für die `sendMessage`-Route ein.

**Einrichten der Anforderungsvalidierung**

1. Klicken Sie auf der Registerkarte **Routenanforderung** unter **Routenanforderungseinstellungen** auf **Bearbeiten**.

1. Geben Sie unter **Modellauswahlausdruck** **\$1\$1request.body.messageType\$1** ein.

   API Gateway verwendet die `messageType`-Eigenschaft zur Validierung der eingehenden Anforderung.

1. Klicken Sie auf **Anforderungsmodell hinzufügen**.

1. Geben Sie für **Modellschlüssel** **email** ein.

1. Wählen Sie unter **Modell** die Option **emailModel** aus.

   API Gateway validiert eingehende Nachrichten mithilfe der `messageType`-Eigenschaft, die anhand dieses Modells auf `email` gesetzt ist.
**Anmerkung**  
Wenn API Gateway den Modellauswahlausdruck nicht mit einem Modellschlüssel abgleichen kann, wird das `$default`-Modell ausgewählt. Wenn kein `$default`-Modell vorhanden ist, schlägt die Validierung fehl. Für die Produktion empfehlen wir APIs, dass Sie ein `$default` Modell erstellen.

1. Wählen Sie **Änderungen speichern ** aus.

In diesem Schritt stellen Sie Ihre API bereit und testen sie.

**Bereitstellen und testen Ihrer API**

1. Klicken Sie auf **Deploy API**.

1. Wählen Sie die gewünschte Stufe aus der Dropdown-Liste aus oder geben Sie den Namen einer neuen Stufe ein.

1. Wählen Sie **Bereitstellen**.

1. Klicken Sie im Hauptnavigationsbereich auf **Stufen**.

1. Kopieren Sie die WebSocket URL Ihrer API. Die URL sollte wie `wss://abcdef123.execute-api.us-east-2.amazonaws.com/production` aussehen.

1. Öffnen Sie ein neues Terminal. Führen Sie den Befehl **wscat** mit den folgenden Parametern aus.

   ```
   wscat -c wss://abcdef123.execute-api.us-west-2.amazonaws.com/production
   ```

   ```
   Connected (press CTRL+C to quit)
   ```

1. Testen Sie Ihre API mit dem folgenden Befehl.

   ```
   {"action": "sendMessage", "messageType": "email"}
   ```

   ```
   {"message": "Invalid request body", "connectionId":"ABCD1=234", "requestId":"EFGH="}
   ```

   Die Anforderung schlägt in API Gateway fehl.

   Verwenden Sie den folgenden Befehl, um eine gültige Anforderung an Ihre API zu senden.

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