Anwendungsprogrammierschnittstellen (Application Programming Interfaces, APIs) sind eine Möglichkeit für Computerprogramme oder Dienste, miteinander zu kommunizieren. Diese Kommunikation erfolgt in der Regel über einen API-Endpunkt, der von einem Programm bereitgestellt wird, das ein Client nutzt.
In diesem Artikel werden zwei beliebte Ansätze zur Erstellung von APIs verglichen: REST-API (Representational State Transfer) und Web-API.
Was ist eine REST-API?
Entgegen der landläufigen Meinung ist die REST-API kein Protokoll. Es ist eine Architektur und die beliebteste Architektur für die Entwicklung von APIs. Wie wir in GraphQL vs. REST – Alles was du wissen musst erklären, ist REST zustandslos, d.h. es werden keine Daten oder Status zwischen den Anfragen gespeichert.
REST definiert außerdem mehrere architektonische Beschränkungen für die Entwicklung von Anwendungen, die über HTTP kommunizieren:
- Client-Server-Architektur
- Zustandslosigkeit
- Einheitliche Schnittstelle
- Cachefähigkeit
- Mehrschichtige Systemarchitektur
- Code auf Abruf
REST ist einfacher zu verwenden als andere API-Protokolle oder Architekturen. Außerdem bietet es zahlreiche weitere Vorteile, die es für viele Entwickler/innen, die APIs erstellen, zur ersten Wahl machen:
- Vielfältige Nachrichtenformate: REST-APIs werden meist mit JSON für die Serialisierung von Daten verwendet, funktionieren aber mit verschiedenen Nachrichtenformaten, darunter JSON, HTTP, einfacher Text und XML. Diese Vielfalt an Optionen verschafft REST einen Vorteil gegenüber Protokollen wie Service Object Access Protocol (SOAP), die hauptsächlich mit XML über HTTP arbeiten. Optionen wie JSON sind deutlich leichter, flexibler mit Unterstützung für Arrays und einfacher zu parsen als XML.
- HTTP-Methoden: REST wird in der Regel mit einer der Methoden
GET
,POST
,PATCH
,DELETE
oderPUT
verwendet, um Daten abzurufen und Anfragen zu stellen, je nach Implementierung des Dienstes. Diese Methoden geben die üblichen HTTP-Erfolgs- und Fehlercodes zurück. Andere Methoden sindOPTIONS
,HEAD
undTRACE
. Diese Methoden sind von Dienst zu Dienst uneinheitlich, da einige Anbieter je nach Bedarf nur eine einzige Methode implementieren können. - Entkoppelte Architektur: REST hat eine Client-Server-Architektur, d. h. die Logik ist von der Präsentation getrennt – mehrere Teile können gleichzeitig bearbeitet werden, ohne dass es zu Störungen kommt.
- Skalierbarkeit: REST-APIs sind einfach und daher leicht zu benutzen. Wenn du sie jedoch erweitern möchtest, kannst du neue Endpunkte erstellen, um eine komplexere Logik einzubinden.
- Cachefähigkeit: Obwohl REST zustandslos ist, kann die Serverantwort auf dem Client zwischengespeichert werden, um redundante Anfragen zu vermeiden. Die Antwort des Servers gibt in der Regel Auskunft darüber, wie das Caching durchgeführt werden soll – wobei der Client die Anfragen für einen bestimmten Zeitraum zwischenspeichert.
- Sicherheit: In den meisten Fällen werden REST-Endpunkte über HTTPS-Endpunkte zugänglich gemacht, wodurch sichergestellt wird, dass die gesamte API-Kommunikation mit TLS/SSL gesichert ist. REST unterstützt auch andere Autorisierungs- und Authentifizierungsverfahren, wie OAuth2 und JSON Web Tokens (JWT).
Was ist eine Web-API?
Eine Web-API ist einfach eine Schnittstelle für den Zugriff auf Serverressourcen über HTTP. Der Begriff bezieht sich auf das Konzept und nicht auf eine bestimmte Technologie – eine Web API kann mit verschiedenen Technologien wie Java und ASP.NET erstellt werden. Web-APIs verwenden eine Open-Source-Schnittstelle und nutzen viele Client-Geräte wie Browser, Smartphones, Tablets und Laptops.
Web-APIs setzen Protokollspezifikationen mit Konzepten wie Caching, Versionierung und verschiedenen Inhaltsformaten um. Eine Web-API kann eine REST-API sein oder auch nicht, je nachdem, wie sie aufgebaut ist. Web-APIs werden in der Regel in einem verteilten System eingesetzt, um Dienste auf verschiedenen Geräten wie Smartphones und Laptops bereitzustellen, und sind auf die Client-Seite der Webanwendung beschränkt.
Hier sind zwei Beispiele für weit verbreitete Web-APIs:
- Google APIs: Dazu gehören die YouTube-APIs, die es Entwicklern ermöglichen, YouTube-Videos in ihre Anwendungen wie z. B. Websites einzubetten, und die Google Maps-API, die es Entwicklern ermöglicht, Google Maps mit Hilfe von JavaScript- oder Flash-Schnittstellen auf Webseiten zu verwenden oder einzubetten.
- Twitter-APIs: Dazu gehören die Twitter-Such-API, die Methoden zur Interaktion mit der Twitter-Suche bereitstellt, und die REST-API, mit der du auf die Kerndaten von Twitter zugreifen kannst.
Eine Web-API wird als System-zu-System-Interaktion ausgeführt. Hier siehst du, wie die Daten innerhalb einer solchen API fließen könnten:
- Das Client-Gerät sendet Anfragen an den Webserver.
- Der Webserver empfängt die Anfrage, verarbeitet sie und sendet sie zur Ausführung an das Client-Gerät zurück.
- Die Ausgabe wird für den Nutzer gerendert.
Zu den vorteilhaften Eigenschaften von Web-APIs gehören:
- Leichte Architektur: Web-APIs eignen sich hervorragend für Geräte mit begrenzter Bandbreite, wie z. B. Smartphones.
- Beschreibende Nachrichtenheader: Web-APIs haben beschreibende Header, die Informationen über den Inhaltstyp, das Sicherheitsschema oder den Umgang mit Caching enthalten können.
- Unterstützt alle Datentypen: Der Body einer Web-API kann für alles verwendet werden, einschließlich Binärdateien (Videos, Bilder, Dokumente), einfaches XML, JSON und HTML.
- Ressourcenorientierter Dienst: Eine Web-API kann Ressourcen auf eine Weise bereitstellen, die der REST-Architektur entspricht.
- Einfache Konfiguration und Einrichtung: Web-APIs sind einfach einzurichten und auszuführen.
Web-API vs. REST-API
Vergleichen wir diese beiden APIs im Detail.
Ähnlichkeiten in der Architektur
Web- und REST-APIs haben einige architektonische Gemeinsamkeiten – sehen wir sie uns an.
- Zustandslosigkeit: HTTP-Anfragen laufen isoliert ab und sind im Grunde zustandslos, da jede Anfrage genug Informationen enthält, um sie abzuschließen. Mehrere Anfragen sind nur durch gemeinsame Informationen wie Cookies oder eine Sitzungs-ID miteinander verbunden. Das Fehlen einer Zustandssynchronisierung reduziert die Komplexität und erhöht die Leistung, da der Server die Anfragen der Clients nicht verfolgen muss. Gleichzeitige Anfragen können auch auf mehrere Server verteilt werden.
- Mehrschichtige Architektur: Beide unterstützen eine mehrschichtige Architektur, bei der API-Bereitstellung, Anfrageauthentifizierung und Speicherung auf mehreren Servern erfolgen können.
- Ressourcenorientiert: In ressourcenorientierten Architekturen werden die Ressourcen auf Uniform Resource Identifiers (URIs) abgebildet. Sowohl Web- als auch REST-APIs sind ressourcenorientiert, da sie Ressourcen über URIs bereitstellen.
- Cachefähigkeit: In REST- und Web-APIs werden Abfragen, die bei jedem Aufruf die gleichen Informationen zurückgeben, zwischengespeichert. Zum Beispiel wird ein OPTION-Aufruf an einem Endpunkt zwischengespeichert, da die Ausgabe immer gleich ist, egal wie oft er aufgerufen wird. Diese Eigenschaft, die als Idempotenz bekannt ist, ist eine gute Grundlage, um zu bestimmen, wann Daten gecached werden können. Idempotenz wird bei REST immer berücksichtigt, bei Web-APIs jedoch nicht so oft. Ein idempotenter API-Aufruf ist ein Aufruf, bei dem sich die Ergebnisse nie ändern – egal, wie oft er aufgerufen wird – selbst wenn sich auf dem Server etwas ändern könnte. Beispiele für idempotente Methoden sind GET, HEAD und OPTIONS.
Unterschiede in der Architektur
Obwohl Web-APIs und REST-APIs ähnliche Architekturmuster aufweisen, gibt es auch einige wichtige Unterschiede.
- Client- und serverseitige Koordination: REST-APIs haben eine lose gekoppelte Architektur, die eine unabhängige Entwicklung auf Client- und Serverseite ermöglicht. Bei Web-APIs werden die Änderungen zwischen Client und Server besser koordiniert.
- Schnittstelle: Abhängig von den Implementierungsdetails verwenden REST-APIs in der Regel Industriestandardschnittstellen. Web-APIs verwenden je nach API-Anbieter eigene Schnittstellen.
Kommunikation
Web-APIs sind flexibel genug, um jeden Kommunikationsstil zu nutzen, während REST-APIs hauptsächlich mit JSON, XML und Klartext verwendet werden. Diese Optionen bedeuten, dass REST-APIs gut für die Übertragung von Textdaten geeignet sind, z. B. für das Erstellen, Lesen, Aktualisieren und Löschen (CRUD) von Daten in einer Datenbank, aber restriktiver, wenn es um binäre Daten geht.
Web-APIs bieten eine viel bessere Erfahrung für Dienste, die binäre Daten benötigen — wie Musik- oder Video-Streaming-Dienste —, da sie mehr Nachrichtenformate unterstützen.
Anwendungsfälle
Obwohl diese API-Formate in vielen Fällen austauschbar sind, gibt es ein paar Szenarien, in denen das eine besser ist als das andere:
- Cloud-Dienste und Anwendungen: Aufgrund ihres zustandslosen Charakters werden REST-APIs in Cloud-Diensten verwendet, da zustandslose Komponenten skaliert und bei Änderungen neu bereitgestellt werden können. Cloud-Dienste und Metriken lassen sich in der Regel am besten als REST-APIs bereitstellen, da kaum eigener Code erforderlich ist.
- Streaming-Dienste: Web-APIs bieten eine bessere Unterstützung und einen geringen Overhead für die Übertragung von Binärdaten auf Geräten mit begrenztem Speicher oder Bandbreite.
- Datenbankmanipulation (CRUD): Es ist einfacher und leichter, CRUD-Funktionen über eine REST-API als über eine Web-API bereitzustellen.
REST-APIs sind für komplexe Anfragen, die auf Ressourcen zugreifen müssen, die nicht in einer einfachen Hierarchie angeordnet sind, schwer zu handhaben. Das liegt an den URIs, die auf Ressourcen verweisen. Das bedeutet, dass die Verwaltung dieser Art von Situation die Manipulation von URI-Pfaden, Abfrageparametern und des Anfragekörpers erfordert, was den Zweck von REST zunichte macht. In diesem Fall ist eine Web-API vorzuziehen, da sie Anpassungen ermöglicht und umfangreiche Unterstützung für URI-Antworten und Anfrage-Header bietet.
Mit der Unterstützung von Techniken wie asynchronen Aufrufen, die sich mit der REST-Architektur nicht so einfach umsetzen lassen, sind Web-APIs die richtige Wahl für komplexe API-Anforderungen.
Zusammenfassung
Web- und REST-APIs werden verwendet, um Anwendungen zu erstellen, die Ressourcen bereitstellen und über HTTP kommunizieren. Während REST architektonische Einschränkungen über eine einheitliche Schnittstelle beschreibt, sind Web-APIs im Allgemeinen ein Konzept, das je nach Implementierung RESTful sein kann.
Sowohl Web- als auch REST-APIs sind leichtgewichtige Formate, die in vielen Situationen austauschbar sind. Im Vergleich zu REST-APIs bieten Web-APIs jedoch eine individuellere Erfahrung und Unterstützung für mehr Nachrichtentypen und sie unterstützen komplexe Interaktionen zwischen Servern und Clients, die mit binären Daten arbeiten.
Und mit den Anwendungs-Hosting-Diensten von Kinsta kannst du deine API-Projekte schneller und effizienter in der Cloud erstellen, testen und bereitstellen.
Schreibe einen Kommentar