Rufen Sie Ihre Backend-Integration mit der $default Route und benutzerdefinierten Routen in Gateway auf API - APIAmazon-Gateway

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.

Rufen Sie Ihre Backend-Integration mit der $default Route und benutzerdefinierten Routen in Gateway auf API

Im folgenden Abschnitt wird beschrieben, wie Sie Ihre Backend-Integration aufrufen, indem Sie entweder die $default Route oder eine benutzerdefinierte Route für a verwenden. WebSocket API

Verwenden von Routen zur Verarbeitung von Nachrichten

In API Gateway WebSocket APIs können Nachrichten vom Client an Ihren Backend-Service gesendet werden und umgekehrt. Im Gegensatz zum HTTP Anforderungs-/Antwortmodell können WebSocket im Backend Nachrichten an den Client gesendet werden, ohne dass der Client etwas unternimmt.

Nachrichten können sein JSON oder nicht-. JSON Auf der Grundlage des JSON Nachrichteninhalts können jedoch nur Nachrichten an bestimmte Integrationen weitergeleitet werden. Nachrichten, die keine JSON Nachrichten sind, werden über die Route an das Backend weitergeleitet. $default

Anmerkung

APIGateway unterstützt Nachrichtennutzlasten bis zu 128 KB mit einer maximalen Framegröße von 32 KB. Sie müssen Nachrichten, die 32 KB überschreiten, in mehrere Frames aufteilen, die jeweils 32 KB oder kleiner sind. Wenn eine größere Nachricht (oder ein größerer Frame) empfangen wird, wird die Verbindung mit dem Code 1009 geschlossen.

Derzeit werden keine binären Nutzlasten unterstützt. Wenn ein binärer Frame empfangen wird, wird die Verbindung mit dem Code 1003 geschlossen. Es ist jedoch möglich, binäre Nutzlasten in Text zu konvertieren. Siehe Binäre Medientypen für WebSocket APIs in API Gateway.

WebSocket APIsIn API Gateway können JSON Nachrichten so weitergeleitet werden, dass sie einen bestimmten Back-End-Dienst ausführen, der auf dem Nachrichteninhalt basiert. Wenn ein Client eine Nachricht über seine WebSocket Verbindung sendet, führt dies zu einer Routing-Anfrage an den. WebSocket API Die Anfrage wird der Route mit dem entsprechenden Routenschlüssel im API Gateway zugeordnet. Sie können eine Routenanforderung für a WebSocket API in der API Gateway-Konsole einrichten AWS CLI, indem Sie den oder verwenden AWS SDK.

Anmerkung

Im AWS CLI und können Sie Routen erstellen AWS SDKs, bevor oder nachdem Sie Integrationen erstellt haben. Derzeit unterstützt die Konsole keine Wiederverwendung von Integrationen. Daher müssen Sie zuerst die Route erstellen und dann die Integration für diese Route.

Sie können API Gateway so konfigurieren, dass eine Routenanforderung validiert wird, bevor Sie mit der Integrationsanfrage fortfahren. Wenn die Validierung fehlschlägt, schlägt API Gateway die Anfrage fehl, ohne Ihr Backend aufzurufen, sendet eine "Bad request body" Gateway-Antwort ähnlich der folgenden an den Client und veröffentlicht die Überprüfungsergebnisse in CloudWatch Logs:

{"message" : "Bad request body", "connectionId": "{connectionId}", "messageId": "{messageId}"}

Dadurch werden unnötige Aufrufe an Ihr Backend reduziert und Sie können sich auf die anderen Anforderungen Ihres konzentrieren. API

Sie können auch eine Routenantwort für Ihre API Routen definieren, um eine bidirektionale Kommunikation zu ermöglichen. Eine Routenantwort beschreibt, welche Daten bei Abschluss der Integration einer bestimmten Route an Ihren Client gesendet werden. Es ist nicht notwendig, eine Antwort für eine Route vorzugeben, wenn ein Client Nachrichten an Ihr Backend senden soll, ohne eine Antwort zu erhalten (unidirektionale Kommunikation). Wenn Sie jedoch keine Routenantwort bereitstellen, sendet API Gateway keine Informationen über das Ergebnis Ihrer Integration an Ihre Kunden.

Die Route $default

Jedes API Gateway WebSocket API kann eine $default Route haben. Hierbei handelt es sich um einen speziellen Routing-Wert, der auf folgende Weise eingesetzt werden kann:

  • Sie können ihn zusammen mit vorgegebenen Routenschlüsseln verwenden, um für eingehende Nachrichten, auf die keine der vorgegebenen Routenschlüssel zutreffen, eine "Fallback"-Route anzugeben (z. B. eine generische Pseudo-Integration, die eine bestimmte Fehlermeldung zurückgibt).

  • Sie können ihn ohne vorgegebene Routenschlüssel verwenden, um ein Proxy-Modell anzugeben, durch das Routing an eine Backend-Komponente delegiert wird.

  • Sie können es verwenden, um eine Route für JSON Nicht-Payloads anzugeben.

Benutzerdefinierte Routen

Wenn basierend auf dem Nachrichteninhalt eine bestimmte Integration aufgerufen werden soll, können Sie hierzu eine benutzerdefinierte Route erstellen.

Für eine benutzerdefinierte Route werden ein Routenschlüssel und eine Integration nach Ihren Angaben verwendet. Wenn eine eingehende Nachricht eine JSON Eigenschaft enthält und diese Eigenschaft einen Wert ergibt, der dem Wert des Routenschlüssels entspricht, ruft API Gateway die Integration auf. (Weitere Informationen finden Sie unter Überblick über WebSocket APIs in API Gateway.)

Angenommen, Sie möchten eine Chat-Raum-Anwendung erstellen. Sie könnten damit beginnen, einen zu erstellen WebSocket API, dessen Routenauswahlausdruck lautet. $request.body.action Anschließend könnten Sie zwei Routen definieren: joinroom und sendmessage. Ein Client-App könnte die joinroom-Route durch Senden einer Nachricht wie die folgende aufrufen:

{"action":"joinroom","roomname":"developers"}

Und sie könnte die sendmessage-Route durch Senden einer Nachricht wie die folgende aufrufen:

{"action":"sendmessage","message":"Hello everyone"}

Verwenden Sie API WebSocket API Gateway-Integrationen, um eine Verbindung zu Ihrer Geschäftslogik herzustellen

Nachdem Sie eine Route für ein API Gateway eingerichtet haben WebSocket API, müssen Sie die Integration angeben, die Sie verwenden möchten. Genauso wie eine Route über eine Routenanforderung und eine Routenantwort verfügen kann, kann eine Integration eine Integrationsanforderung und eine Integrationsantwort besitzen. Eine Integrationsanforderung enthält die Informationen, die von Ihrem Backend zur Verarbeitung der von Ihrem Client stammenden Anforderung erwartet werden. Eine Integrationsantwort enthält die Daten, die Ihr Backend an API Gateway zurückgibt und die verwendet werden können, um eine Nachricht zu erstellen, die an den Client gesendet werden soll (falls eine Routenantwort definiert ist).

Weitere Informationen zum Einrichten von Integrationen finden Sie unter Integrationen für WebSocket API in API Gateway.

Wichtige Unterschiede zwischen und WebSocket APIs REST APIs

Integrationen für WebSocket APIs ähneln Integrationen für RESTAPIs, mit Ausnahme der folgenden Unterschiede:

  • Derzeit müssen Sie in der API Gateway-Konsole zuerst eine Route und dann eine Integration als Ziel dieser Route erstellen. Im API und können Sie Routen und CLI Integrationen jedoch unabhängig voneinander und in beliebiger Reihenfolge erstellen.

  • Sie können eine einzelne Integration für mehrere Routen verwenden. Für eine Gruppe von Aktionen, die eng miteinander in Beziehung stehen, empfiehlt es sich beispielsweise, dass alle diese Routen zu einer einzelnen Lambda-Funktion führen. Anstatt die Details der Integration mehrmals zu definieren, können Sie sie einmal angeben und jeder verwandten Route zuweisen.

    Anmerkung

    Derzeit unterstützt die Konsole keine Wiederverwendung von Integrationen. Daher müssen Sie zuerst die Route erstellen und dann die Integration für diese Route.

    Im AWS CLI und können Sie eine Integration wiederverwenden AWS SDKs, indem Sie das Ziel der Route auf einen Wert von setzen"integrations/{integration-id}", wobei die eindeutige ID der Integration {integration-id}" steht, die der Route zugeordnet werden soll.

  • APIGateway bietet mehrere Auswahlausdrücke, die Sie in Ihren Routen und Integrationen verwenden können. Sie müssen die Auswahl einer Eingabevorlage oder einer Ausgabezuordnung nicht vom Inhaltstyp abhängig machen. Wie bei Ausdrücken für die Routenauswahl können Sie einen Auswahlausdruck definieren, der von API Gateway ausgewertet wird, um das richtige Element auszuwählen. Alle von ihnen übernehmen automatisch die $default-Vorlage, wenn keine passende Vorlage gefunden wird.

    • In Integrationsanforderungen unterstützt der Vorlagen-Auswahlausdruck $request.body.<json_path_expression> und statische Werte.

    • In Integrationsantworten unterstützt der Vorlagen-Auswahlausdruck $request.body.<json_path_expression>, $integration.response.statuscode und $integration.response.header.<headerName> sowie statische Werte.

Im HTTP Protokoll, in dem Anfragen und Antworten synchron gesendet werden, erfolgt die Kommunikation im Wesentlichen in eine Richtung. Im WebSocket Protokoll erfolgt die Kommunikation in beide Richtungen. Antworten sind asynchron und werden vom Client nicht unbedingt in der gleichen Reihenfolge empfangen, in der die Client-Nachrichten gesendet wurden. Darüber hinaus kann das Backend Nachrichten an den Client senden.

Anmerkung

Bei einer Route, die für die Verwendung AWS_PROXY oder LAMBDA_PROXY Integration konfiguriert ist, erfolgt die Kommunikation unidirektional, und das API Gateway leitet die Backend-Antwort nicht automatisch an die Routenantwort weiter. Wenn bei der LAMBDA_PROXY-Integration wird der von der Lambda-Funktion zurückgegebene Text beispielsweise nicht an den Client zurückgegeben. Wenn Sie möchten, dass der Client Integrationsantworten erhält, müssen Sie eine Routenantwort definieren, um eine bidirektionale Kommunikation zu ermöglichen.