Entwickeln einer REST-API in API Gateway - Amazon API Gateway

Entwickeln einer REST-API in API Gateway

In Amazon API Gateway erstellen Sie eine REST-API als eine Sammlung programmierbarer Entitäten, die als API Gateway-Ressourcen bekannt ist. Beispiel: Sie können eine RestApi-Ressource verwenden, um eine API darzustellen, die eine Sammlung von Ressourcen-Entitäten enthalten kann.

Jede Resource-Entität kann über eine oder mehrere Methoden-Ressourcen verfügen. Eine Method ist eine eingehende Anfrage, die vom Client übermittelt wird, und kann die folgenden Anfrageparameter enthalten: einen Pfadparameter, einen Header oder einen Abfragezeichenfolgenparameter. Zusätzlich kann die Anfrage, abhängig von der HTTP-Methode, einen Body enthalten. Die Methode definiert, wie der Client auf die exponierte Resource zugreift. Erstellen Sie eine Ressource unter Integration, um die Method mit einem Backend-Endpunkt (auch als Integrationsendpunkt bekannt) zu integrieren. Dadurch wird die eingehende Anforderung an eine bestimmte Integrationsendpunkt-URI weitergeleitet. Falls erforderlich, können Sie Anfrageparameter oder den Anfrage-Body transformieren, um die Anforderungen des Backends zu erfüllen, oder Sie erstellen eine Proxyintegration, bei der API Gateway die gesamte Anfrage in einem standardisierten Format an die Integrationsendpunkt-URI sendet und anschließend die Antwort direkt an den Client weiterleitet.

Sie erstellen eine MethodResponse-Ressource zur Darstellung von Antworten, die vom Client empfangen wurde, und eine IntegrationResponse-Ressource zur Darstellung von Antworten, die durch das Backend zurückgegeben wurde. Verwenden Sie eine Integrationsantwort, um die Backend-Antwortdaten zu transformieren, bevor die Daten an den Client zurückgegeben werden, oder um die Backend-Antwort unverändert an den Client zu übermitteln.

Beispielressource für eine REST-API

Das folgende Diagramm zeigt, wie API Gateway dieses Anfrage-/Antwortmodell für eine HTTP-Proxy- und eine Nicht-Proxy-HTTP-Integration für die Ressource GET /pets implementiert. Der Client sendet den Header x-version:beta an API Gateway und API Gateway sendet den Statuscode 204 an den Client.

In der Nicht-Proxy-Integration führt API Gateway Datentransformationen durch, um die Backend-Anforderungen zu erfüllen, indem die Integrationsanfrage und die Integrationsantwort angepasst werden. Bei einer Nicht-Proxy-Integration können Sie auf den Body in der Methodenanforderung zugreifen, jedoch transformieren Sie ihn in der Integrationsanforderung. Wenn der Integrationsendpunkt eine Antwort mit einem Body zurückgibt, greifen Sie in der Integrationsantwort darauf zu und transformieren ihn. Sie können den Body in der Methodenantwort nicht ändern.

Bei der Proxyintegration ändert der Integrationsendpunkt die Anfrage und Antwort. API Gateway verändert weder die Integrationsanfrage noch die Integrationsantwort und sendet die eingehende Anfrage unverändert an das Backend.

Unabhängig vom Integrationstyp hat der Client eine Anfrage an API Gateway gesendet und API Gateway hat synchron geantwortet.

Non-proxy integration
Diagramm der Nicht-Proxy-Integration des API Gateway
Proxy integration
Diagramm der Proxy-Integration des API Gateway

Die folgenden Beispielausführungsprotokolle zeigen, was API Gateway im vorherigen Beispiel protokollieren würde. Zur besseren Übersicht wurden einige Werte und erste Protokolle entfernt:

Non-proxy integration
Wed Feb 12 23:56:44 UTC 2025 : Starting execution for request: abcd-1234-5678 Wed Feb 12 23:56:44 UTC 2025 : HTTP Method: GET, Resource Path: /pets Wed Feb 12 23:56:44 UTC 2025 : Method request path: {} Wed Feb 12 23:56:44 UTC 2025 : Method request query string: {} Wed Feb 12 23:56:44 UTC 2025 : Method request headers: {x-version=beta} Wed Feb 12 23:56:44 UTC 2025 : Method request body before transformations: Wed Feb 12 23:56:44 UTC 2025 : Endpoint request URI: http://petstore-demo-endpoint.execute-api.com/petstore/pets Wed Feb 12 23:56:44 UTC 2025 : Endpoint request headers: {app-version=beta} Wed Feb 12 23:56:44 UTC 2025 : Endpoint request body after transformations: Wed Feb 12 23:56:44 UTC 2025 : Sending request to http://petstore-demo-endpoint.execute-api.com/petstore/pets Wed Feb 12 23:56:45 UTC 2025 : Received response. Status: 200, Integration latency: 123 ms Wed Feb 12 23:56:45 UTC 2025 : Endpoint response headers: {Date=Wed, 12 Feb 2025 23:56:45 GMT} Wed Feb 12 23:56:45 UTC 2025 : Endpoint response body before transformations: Wed Feb 12 23:56:45 UTC 2025 : Method response body after transformations: (null) Wed Feb 12 23:56:45 UTC 2025 : Method response headers: {X-Amzn-Trace-Id=Root=1-abcd-12345} Wed Feb 12 23:56:45 UTC 2025 : Successfully completed execution Wed Feb 12 23:56:45 UTC 2025 : Method completed with status: 204
Proxy integration
Wed Feb 12 23:59:42 UTC 2025 : Starting execution for request: abcd-1234-5678 Wed Feb 12 23:59:42 UTC 2025 : HTTP Method: GET, Resource Path: /pets Wed Feb 12 23:59:42 UTC 2025 : Method request path: {} Wed Feb 12 23:59:42 UTC 2025 : Method request query string: {} Wed Feb 12 23:59:42 UTC 2025 : Method request headers: {x-version=beta} Wed Feb 12 23:59:42 UTC 2025 : Method request body before transformations: Wed Feb 12 23:59:42 UTC 2025 : Endpoint request URI: http://petstore-demo-endpoint.execute-api.com/petstore/pets Wed Feb 12 23:59:42 UTC 2025 : Endpoint request headers: { x-version=beta} Wed Feb 12 23:59:42 UTC 2025 : Endpoint request body after transformations: Wed Feb 12 23:59:42 UTC 2025 : Sending request to http://petstore-demo-endpoint.execute-api.com/petstore/pets Wed Feb 12 23:59:43 UTC 2025 : Received response. Status: 204, Integration latency: 123 ms Wed Feb 12 23:59:43 UTC 2025 : Endpoint response headers: {Date=Wed, 12 Feb 2025 23:59:43 GMT} Wed Feb 12 23:59:43 UTC 2025 : Endpoint response body before transformations: Wed Feb 12 23:59:43 UTC 2025 : Method response body after transformations: Wed Feb 12 23:59:43 UTC 2025 : Method response headers: {Date=Wed, 12 Feb 2025 23:59:43 GMT} Wed Feb 12 23:59:43 UTC 2025 : Successfully completed execution Wed Feb 12 23:59:43 UTC 2025 : Method completed with status: 204

Um eine ähnliche API zu importieren und in der AWS Management Console zu testen, sehen Sie sich die Beispiel-API an.

Zusätzliche REST-API-Features für die Entwicklung

API Gateway unterstützt zusätzliche Features für die Entwicklung Ihrer REST-API. Zum Beispiel können Sie, um Ihren Kunden das Verständnis Ihrer API zu erleichtern, Dokumentation für die API bereitstellen. Hierzu fügen Sie eine DocumentationPart-Ressource für eine unterstützte API-Entität hinzu.

Um zu steuern, wie Clients eine API aufrufen, verwenden Sie IAM-Berechtigungen, einen Lambda-Genehmiger oder einen Amazon Cognito-Benutzerpool. Um die Nutzung Ihrer API zu messen, richten Sie Nutzungspläne ein, um die API-Anforderungen zu drosseln. Diese aktivieren Sie beim Erstellen oder Aktualisieren der API.

Das folgende Diagramm zeigt die Features, die für die REST-API-Entwicklung verfügbar sind, und an welcher Stelle im Anfrage-/Antwortmodell diese Features konfiguriert werden.

Diagramm der API-Gateway-Features

Eine Einführung in die Erstellung einer API finden Sie unter Tutorial: Erstellen einer REST-API mit einer Lambda-Proxy-Integration. Weitere Informationen zu den Funktionen von API Gateway, die Sie bei der Entwicklung einer REST-API verwenden können, finden Sie in den nachfolgenden Themen. Diese Themen enthalten konzeptionelle Informationen und Verfahren, die Sie über die API-Gateway-Konsole, die API-Gateway-REST-API, die AWS CLI oder mit einem der AWS-SDKs ausführen können.