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.
Sie können API Gateway so konfigurieren, dass die Validierung einer Routenanforderung durchgeführt wird, bevor Sie mit der Integrationsanforderung fortfahren. Bei einer fehlgeschlagenen Validierung erkennt API Gateway die Anforderung sofort als fehlerhaft, ohne das Backend aufzurufen, sendet eine "Bad request body"-Gateway-Antwort 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 für eine WebSocket-API eine Route vorgeben, können Sie optional einen Modell-Auswahlausdruck 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
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. Für dieses Tutorial benötigen Sie eine WebSocket-API mit $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" } } }
Für dieses Modell muss die Anfrage eine E-Mail-Adresse enthalten.
Wählen Sie Save (Speichern) aus.
In diesem Schritt erstellen Sie eine Route für Ihre WebSocket-API.
Erstellen Sie eine Route.
Klicken Sie im Hauptnavigationsbereich auf Routen.
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 das WebSocket APIs API Gateway.
Wählen Sie Create route (Route erstellen) aus.
In diesem Schritt richten Sie die Anforderungsvalidierung für die sendMessage
-Route ein.
Einrichten der Anforderungsvalidierung
Klicken Sie auf der Registerkarte Routenanforderung unter Routenanforderungseinstellungen auf Bearbeiten.
Geben Sie unter Modellauswahlausdruck
${request.body.messageType}
ein.API Gateway verwendet die
messageType
-Eigenschaft zur Validierung der eingehenden Anforderung.Klicken Sie auf Anforderungsmodell hinzufügen.
Geben Sie für Modellschlüssel
email
ein.Wählen Sie unter Modell die Option emailModel aus.
API Gateway validiert eingehende Nachrichten mithilfe der
messageType
-Eigenschaft, die anhand dieses Modells aufemail
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 Produktions-APIs empfehlen wir, ein$default
-Modell zu erstellen.Wählen Sie Änderungen speichern.
In diesem Schritt stellen Sie Ihre API bereit und testen sie.
Bereitstellen und testen Ihrer API
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. Führen Sie den Befehl wscat mit den folgenden Parametern aus.
wscat -c wss://
abcdef123
.execute-api.us-west-2
.amazonaws.com/productionConnected (press CTRL+C to quit)
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"}