Die 5 wichtigsten Standards & Protokolle für API Architekturen im Überblick.
Jede API-Bauweise hat ihre eigenen Vorzüge, die sie für unterschiedliche Einsatzgebiete und Anwendungen geeignet macht. Die Architektur ist allerdings nicht zu verwechseln mit dem verwendeten Protokoll: Während API-Architekturen den konzeptionellen Rahmen und die Prinzipien definieren, wie APIs entworfen und verwendet werden, legen die verwendeten Protokolle die Regeln und Standards der API-Kommunikation fest.
REST-APIs: einfach und flexibel.
REST (Representational State Transfer) ist ein Standard für die Gestaltung von netzwerkbasierten Anwendungen wie Webanwendungen oder mobile Apps. Sie legt einen Rahmen für die Kommunikation zwischen Client und Server fest.
Jeder Endpunkt kann dabei durch eine eindeutige URL abgerufen werden. Möchte beispielsweise ein Kunde in einem Hotel ein Zimmer buchen, kann er sich über die URL https://www.testhotel.com/zimmer eine Liste der Hotelzimmer anzeigen lassen.
Eine REST-API verwendet standardisierte HTTP-Methoden wie GET, POST, PUT und DELETE, um Operationen auszuführen wie das Lesen, Erstellen, Aktualisieren oder Löschen bestimmter Ressourcen. Hat der Kunde beispielsweise bereits ein Zimmer gebucht, möchte aber den Reisezeitraum ändern, wird dies über den API-Aufruf PUT geregelt.
In der REST-Architektur ist jede Interaktion „stateless“ (zustandslos), was bedeutet, dass jeder API-Aufruf unabhängig voneinander erfolgt und der Server keine Sitzungsdaten speichert. Damit muss zwar jede Anfrage alle Informationen enthalten, die der Server benötigt, um sie zu verstehen und zu verarbeiten. Allerdings erhöht es auch die Zuverlässigkeit und Performance einer Sitzung erheblich.
SOAP-APIs: sicher und zuverlässig.
SOAP steht für Simple Object Access Protocol und ist ein Protokollstandard, der für den Austausch von Nachrichtendaten zwischen Netzwerkanwendungen verwendet wird. Es baut auf XML auf, um Nachrichten zu strukturieren, und nutzt in der Regel HTTP oder SMTP (Simple Mail Transfer Protocol) für die Übertragung dieser Nachrichten.
Ein wichtiges Merkmal von SOAP ist seine strenge Spezifikation bzw. Strukturierung, was es sehr zuverlässig macht.
Dadurch, dass SOAP auch Web Services Spezifikationen wie WS-Security für Verschlüsselung und Authentifizierung unterstützt, wird es gerne für Anwendungen und Services genutzt, die eine hohe Sicherheit erfordern, z.B. für Banktransaktionen.
SOAP wird tendenziell als schwerfälliger angesehen als z.B. REST, besonders für einfache Anwendungsfälle. Der Grund dafür liegt in der komplexen Struktur von SOAP-Nachrichten und dem Overhead, der durch das XML-Format verursacht wird. Dennoch bleibt SOAP eine beliebte Wahl für Enterprise-Level-Anwendungen, wo die Bedürfnisse nach Sicherheit und Zuverlässigkeit der Daten die Komplexität rechtfertigen.
GraphQL: moderne REST-Alternative.
GraphQL ist eine von Facebook entwickelte Abfragesprache für APIs und stellt eine moderne Alternative zu traditionellen REST- und SOAP-APIs dar. Es ermöglicht beispielsweise optimierte Datenabfragen für Nutzerprofile und Feeds auf Social Media Plattformen.
Die Technologie erlaubt eine gezielte, Client-gesteuerte Datenabfrage, bei der der Client exakt festlegen kann, welche Daten er benötigt. Im Gegensatz zu REST werden also nur relevante Daten geladen, womit sogenanntes Overfetching (zu viele irrelevante Daten werden abgerufen) oder Underfetching (zu wenige oder lückenhafte Daten werden abgerufen) verhindert wird.
Hinzu kommt, dass die Abfragesprache nur einen einzigen Endpunkt in Form einer einzigen API-URL benötigt. Dadurch laufen alle Abfragen über eine zentrale /graphql-Route, anstatt auf jeden Endpoint mittels einer dedizierten URL zugreifen zu müssen.
Ein wesentlicher Vorteil von Facebooks Abfragesprache ist zudem die Fähigkeit, mit einer Anfrage mehrere Endpoints abzufragen und zusammenzuführen (sogenannte „Batch Requests“), was die Anzahl der Netzwerkanfragen reduziert. Dies ist besonders nützlich in Netzwerken mit hoher Latenz oder begrenzter Bandbreite, z.B. mobile Netzwerke.
RPC und gRPC: remote und asynchron.
RPC steht für Remote Procedure Call und ist ein Kommunikationsprotokoll, das die Ausführung von Funktionen oder Vorgängen auf einem physisch entfernten System ermöglicht, als ob sie lokal ausgeführt würden. Das verringert die Komplexität und erleichtert Entwicklern die Erstellung und Bereitstellung von Funktionen.
RPC unterstützt sowohl synchrone als auch asynchrone Kommunikation, was bedeutet, dass der Client auf eine Antwort warten kann (synchron) oder mit anderen Aufgaben fortfahren kann, bis die Antwort eintrifft (asynchron).
Die Technologie wird häufig in räumlich verteilten Systemen und bei der Entwicklung von Netzwerkanwendungen wie Webdiensten oder Cloud-basierten Diensten eingesetzt, wo es wichtig ist, die Komplexität der direkten Netzwerkkommunikation zu reduzieren.
Oftmals wird auch anstelle von RPC das von Google erweiterte Framework gRPC genutzt, das für seine hohe Leistung und niedrigen Latenzen bekannt ist. Es eignet sich daher besonders gut für Mikroservices und Anwendungen, die eine hohe Skalierbarkeit voraussetzen. Googles Technologie nutzt das schnellere und sicherere Transportprotokoll HTTP/2, das ebenfalls schnellere Serialisierungs-Format Protobuf (Protocol Buffers) und beherrscht die API-Interaktionsmodelle Unary (einfache Anfrage-Antwort), Server-Streaming, Client-Streaming und bidirektionales Streaming.
Während gRPC speziell für die Bedürfnisse moderner, entkoppelter Systeme und Mikroservice-Architekturen konzipiert ist, sind traditionelle RPC-Systeme etwas flexibler und für mehr Anwendungsbereiche geeignet.
OData: offen und standardisiert.
OData (Open Data Protocol) ist eine offene Technologie, die auf REST basiert und für die Erstellung und Nutzung von standardisierten, interoperablen REST-APIs entworfen und verfügbar gemacht wurde.
Es ermöglicht die einfache Veröffentlichung, Bearbeitung und das Abrufen von Daten über das Internet. OData zielt darauf ab, den Access auf Datenbestände ähnlich einfach zu gestalten wie das Web den Zugriff auf Dokumente vereinfacht, und verwendet dafür bekannte Webtechnologien wie HTTP, Atom Publishing Protocol (AtomPub) und JSON.
OData ist in der Lage, komplexe Datenabfragen über URLs zu verarbeiten, was Operationen beinhaltet wie Filterung, Sortierung, Paginierung und Assoziationen zwischen Datensätzen. Entwickler können mithilfe von OData RESTful Services erstellen, die es Clients erlauben, mit Daten flexibel zu interagieren.
Durch die Standardisierung des Zugriffs auf Datenquellen verschiedener Art (wie relationale Datenbanken, Dateisysteme, Content-Management-Systeme und traditionelle Webdienste) erleichtert OData die Entwicklung von plattform- und geräteunabhängigen Anwendungen. Das macht es für Entwickler zu einem wertvollen Tool, um datengesteuerte Anwendungen zu erstellen, die sich mit geringstem Aufwand anpassen und in verschiedene Datenquellen integrieren lassen.