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 in API Gateway anfordern
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
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 requestmodels
.
Ein Modell wird als JSON-Schema
Einrichten der grundlegenden Anforderungsvalidierung über die API-Gateway-Konsole
Das folgende Beispiel zeigt Ihnen, wie Sie die Anforderungsvalidierung für eine 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. Schließlich 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 verwendetwscat, um eine Verbindung zu einer WebSocket API herzustellen und Nachrichten an diese zu senden.
So erstellen Sie ein Modell
Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway
an. Wählen Sie eine WebSocket API.
Klicken Sie im Navigationsbereich auf Models (Modelle).
Wählen Sie Modell erstellen aus.
Geben Sie unter Name
emailModel
ein.Geben Sie für Content type (Inhaltstyp)
application/json
ein.Geben Sie für Modellschema Folgendes ein:
{ "$schema": "http://json-schema.org/draft-04/schema#", "type" : "object", "required" : [ "address"], "properties" : { "address": { "type": "string" } } }
Dieses Modell erfordert, dass die Anfrage eine E-Mail-Adresse enthält.
Wählen Sie Speichern.
In diesem Schritt erstellen Sie eine Route für Ihre WebSocket API.
Erstellen Sie eine Route.
Wählen Sie im Hauptnavigationsbereich Routes aus.
Wählen Sie Create route (Route erstellen) aus.
Geben Sie in Route key (Routenschlüssel)
sendMessage
ein.Wählen Sie einen Integrationstyp und geben Sie einen Integrationsendpunkt an. Weitere Informationen finden Sie unter Integrationen für WebSocket API In-Gateway API.
Wählen Sie Create route (Route erstellen) aus.
In diesem Schritt richten Sie die Anforderungsvalidierung für die sendMessage
Route ein.
Um die Anforderungsvalidierung einzurichten
Wählen Sie auf der Registerkarte Routenanfrage unter Einstellungen für Routenanfragen die Option Bearbeiten aus.
Geben Sie als Ausdruck für die Modellauswahl den Wert ein
${request.body.messageType}
.API Gateway verwendet die
messageType
Eigenschaft, um die eingehende Anfrage zu validieren.Wählen Sie Anforderungsmodell hinzufügen aus.
Geben Sie als Modellschlüssel ein
email
.Wählen Sie als Modell die Option EmailModel aus.
API Gateway validiert eingehende Nachrichten, bei denen die
messageType
Eigenschaft auf gesetzt ist,email
anhand dieses Modells.Anmerkung
Wenn API Gateway den Modellauswahlausdruck nicht mit einem Modellschlüssel abgleichen kann, wählt es das
$default
Modell aus. Wenn kein$default
Modell vorhanden ist, schlägt die Validierung fehl. Für Produktions-APIs empfehlen wir, ein$default
Modell zu erstellen.Wählen Sie Änderungen speichern aus.
In diesem Schritt stellen Sie Ihre API bereit und testen sie.
Um Ihre API bereitzustellen und zu testen
Klicken Sie auf Deploy API.
Wählen Sie die gewünschte Stufe aus der Dropdown-Liste aus oder geben Sie den Namen einer neuen Stufe ein.
Wählen Sie Bereitstellen.
Klicken Sie im Hauptnavigationsbereich auf Stages (Stufen).
Kopieren Sie die WebSocket URL Ihrer API. Die URL sollte wie
wss://
aussehen.abcdef123
.execute-api.us-east-2
.amazonaws.com/productionÖffnen Sie ein neues Terminal und führen Sie den wscat Befehl mit den folgenden Parametern aus.
wscat -c wss://
abcdef123
.execute-api.us-west-2
.amazonaws.com/productionConnected (press CTRL+C to quit)
Verwenden Sie den folgenden Befehl, um Ihre API zu testen.
{"action": "sendMessage", "messageType": "email"}
{"message": "Invalid request body", "connectionId":"ABCD1=234", "requestId":"EFGH="}
API Gateway schlägt die Anfrage fehl.
Verwenden Sie den nächsten Befehl, um eine gültige Anfrage an Ihre API zu senden.
{"action": "sendMessage", "messageType": "email", "address": "mary_major@example.com"}