Über das API-Gateway
Webbasierte Dienste bieten heute eine Vielzahl von Funktionen, d. h. von Karten-, Wetter- und Bilddiensten bis hin zu Spielen, Auktion und vielen anderen Diensttypen. Dienstanbieter haben viele Möglichkeiten, ihre Dienste zu implementieren, bereitzustellen und zu verwalten. Beispielsweise kann ein Dienst in Java oder .NET entwickelt werden, während ein anderer Node.js verwendet.
Backend-Implementierungen können auch für einen einzelnen Dienstanbieter variieren. Für einen Dienstanbieter können Legacy-Dienste mit einer Architektur und neue Dienste mit einer völlig anderen Architektur implementiert werden.
Unabhängig von der Implementierung erfordern webbasierte Dienste alle eine Möglichkeit, die Dienste für Anwendungsentwickler verfügbar zu machen. Häufig werden diese Dienste als ein Satz von HTTP-Endpunkten bereitgestellt. Je nach Dienst kann der Endpunkt auch Daten im XML- oder JSON-Format an die Clientanwendung zurückgeben.
Informationen zu Google Cloud Platform-Diensten
Wenn Sie Ihre Dienste auf der Google Cloud Platform (GCP) entwickeln, haben Sie viele Möglichkeiten, wie Sie die Dienste implementieren, z. B. über Cloud Run-Funktionen, Cloud Run und App Engine Standardumgebung. Dank der Flexibilität der GCP entscheiden Sie sich für die richtige Backend-Architektur, die Ihren Dienstanforderungen entspricht.
App-Entwickler sind Kunden von Backend-Diensten. App-Entwickler nutzen Ihre Dienste zur Implementierung von Anwendungen für mobile Geräte oder Tablets, über Anwendungen, die in einem Browser laufen, oder über jede andere Art von Anwendung, die eine Dienstanforderung stellen kann.
Es kann schwierig sein, Dienste öffentlich über das Web freizugeben. Ein Dienstanbieter muss folgende Voraussetzungen erfüllen, um erfolgreich zu sein:
- Authentifizierung des Zugangs zum Dienst
- Sichere Datenübertragung zwischen Clients und dem Dienst
- Dienst vor böswilligen Angriffen schützen
- Dienst skalieren, wenn die Nutzung zu- oder abnimmt
- Backend-Betriebsteam eine Möglichkeit zur Überwachung und Nachverfolgung der Dienstauslastung bieten
- Nutzung zur Bereitstellung genauer Abrechnungsinformationen nachverfolgen
Wenn Ihre Dienste außerdem unterschiedliche Schnittstellen und Protokolle verwenden, kann der Zugriff auf diese Dienste für App-Entwickler eine Herausforderung sein. Entwickler müssen nicht nur jede Dienstschnittstelle lernen und verstehen, sondern auch die verschiedenen Dienste auf Änderungen prüfen und Anwendungen nach Bedarf aktualisieren und neu bereitstellen.
API Gateway
API Gateway ermöglicht Ihnen, unabhängig von der Implementierung des Dienstes, einen sicheren Zugriff auf Ihre Dienste über eine klar definierte REST API zu bieten, die unabhängig von der Dienstimplementierung konsistent ist. Eine konsistente API:
- Ermöglicht Anwendungsentwicklern die Nutzung Ihrer Dienste
- Ermöglicht das Ändern der Implementierung des Backend-Dienstes, ohne die öffentliche API zu beeinträchtigen
- Ermöglicht die Nutzung der in die Google Cloud Platform (GCP) integrierten Skalierungs-, Monitoring- und Sicherheitsfunktionen
In der folgenden Abbildung sehen Sie, wie App-Entwickler Anfragen über API Gateway an Ihre Backend-Dienste stellen:
Mit API Gateway verwenden App-Entwickler Ihre REST APIs, um Anwendungen zu implementieren. Da alle APIs auf API Gateway gehostet werden, sehen App-Entwickler eine einheitliche Schnittstelle für alle Backend-Dienste.
Durch die Bereitstellung Ihrer APIs in API Gateway können Sie den Backend-Dienst aktualisieren oder den Dienst sogar von einer Architektur in eine andere verschieben, ohne die API ändern zu müssen. Solange die API für Ihren Dienst konsistent bleibt, müssen App-Entwickler aufgrund von zugrunde liegenden Änderungen in Ihrem Backend keine bereitgestellten Anwendungen ändern.
API Gateway ist ein verteiltes API-Verwaltungssystem, das auch Hosting-, Logging-, Monitoring- und andere Features bietet, mit denen Sie Ihre APIs erstellen, freigeben, verwalten und schützen können. API Gateway ist nativ in GCP integriert und übernimmt alle Aufgaben, die mit der Verarbeitung gleichzeitiger API-Aufrufe verbunden sind, einschließlich Traffic-Management, Autorisierung und Überwachung.
Was ist eine API?
Eine API ist eine Schnittstelle, mit der eine Anwendung problemlos Funktionen oder Daten aus einer anderen Anwendung nutzen kann. Durch die Definition von stabilen, einfachen und gut dokumentierten Einstiegspunkten können Entwickler dank APIs auf die von anderen Entwicklern erstellte Anwendungslogik zugreifen und diese wiederverwenden.
In der folgenden Tabelle wird beispielsweise ein Beispiel für eine REST API beschrieben, die Informationen über ein Buch zurückgeben könnte:
Attribut | Wert | Beschreibung |
---|---|---|
URL | https://www.mybooksapi.com/books/info | Gibt Titel, Autor und Erscheinungsdatum eines Buches basierend auf seiner internationalen Standardbuchnummer (PST) zurück. |
HTTP-Verb | GET | Senden Sie eine GET-Anfrage an die API. |
Abfrageparameter | isbn
|
Übergeben Sie die RSS-Nummer des Buches. Das ist die ID des Buches. |
Antwortdaten | { "title" : "book_title", "author" : "author_name", "published" : "publish_date" } |
JSON-Objekt mit Buchdetails. |
Antwortcode | 200 | Anfrage erfolgreich. |
Anhand dieser Informationen können Sie die folgende cURL-Anfrage an diese API senden, um Informationen zu einem Buch abzurufen:
curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217
Da dieser Dienst eine klar definierte API hat, einschließlich einer Beschreibung der Datenformate und HTTP-Antwortcodes, muss der App-Entwickler nichts über die zugrunde liegende Implementierung des Backend-Dienstes wissen.
Da Anwendungen, die APIs verwenden, auf Änderungen empfindlich reagieren, schließen APIs auch einen Vertrag zwischen API-Anbietern und API-Nutzern ein. Der Vertrag sorgt dafür, dass sich die API im Laufe der Zeit auf vorhersehbare Weise verändert. Beispielsweise kann die Buch-API aktualisiert werden, um zusätzliche Abfrageparameter wie title
oder author
hinzuzufügen, oder die JSON-Antwort ändern, um zusätzliche Informationen zum Buch hinzuzufügen.
API definieren
Sie definieren eine auf API Gateway bereitgestellte API als OpenAPI 2.0-Spezifikation. Die wichtigsten Komponenten einer API-Definition sind:
- Die URL oder der Einstiegspunkt des Backend-Dienstes
- Das Datenformat aller Daten, die an eine Anfrage an die API übergeben werden
- Das Datenformat aller Daten, die vom Dienst in der Antwort von der API zurückgegeben werden
- Der Authentifizierungsmechanismus, mit dem der Zugriff auf den Dienst gesteuert wird
Nachdem Sie die API definiert haben, laden Sie sie über die gcloud-Befehlszeile in eine API-Konfiguration auf der GCP hoch:
API-Konfiguration in API Gateway bereitstellen
Zum Erstellen Ihrer API stellen Sie die API-Konfiguration auf dem API-Gateway bereit.
Stellen Sie die API-Konfiguration mit dem Befehl gcloud
bereit:
Nachdem die API-Konfiguration bereitgestellt wurde, können Ihre Clients REST-Aufrufe an die API senden.
API verwalten
Nach der Bereitstellung und Ausführung können Sie API-Aktivitäten wie Nutzungsmesswerte und Logs überwachen. Wenn ein Client eine Anfrage an Ihre API sendet, protokolliert API Gateway Informationen über die Anfrage und die Antwort. API Gateway verfolgt auch Latenz, Traffic und Fehler.
Im Laufe der Zeit möchten Sie möglicherweise eine bereitgestellte API aktualisieren, um neue Funktionen hinzuzufügen, die Leistung zu verbessern oder Probleme mit der API zu beheben. Zum Aktualisieren einer bereitgestellten API aktualisieren Sie einfach die OpenAPI-Spezifikation für die API-Definition und stellen Sie diese dann noch einmal bereit.
API-Zugriff steuern
Mit API Gateway können Sie Ihre API so konfigurieren, dass eine Authentifizierung erforderlich ist, bevor der Client auf die API zugreifen kann. Derzeit unterstützt API Gateway den gleichen Authentifizierungsmechanismus und die gleiche Syntax wie Cloud Endpoints, darunter:
Außerdem haben Sie auf der Google Cloud Platform Console die Möglichkeit, Ihre API für andere Entwickler freizugeben, sodass sie die API aktivieren und API-Schlüssel zu deren Aufruf generieren können.
Neben der Definition eines Authentifizierungsmechanismus zur Überprüfung der Identität eines Nutzers muss Ihre API auch festlegen, was der authentifizierte Nutzer mit Ihrer API tun kann. Weitere Informationen finden Sie im GCP-Authentifizierungsleitfaden.