GraphQL vs. REST API - was sind die Vorteile
Damit Anwendungen im Web mit anderen lokalen oder entfernten Programmen Informationen und Daten austauschen können, verwenden sie ein Application Programming Interface (API). Dabei handelt es sich um auf einer Seite implementierten, universellen Schnittstelle, die die Struktur und die Art der Kommunikation definiert und auf Verbindungen von außerhalb wartet. Für das Format der Kontaktaufnahme und Datenübermittlung existieren neben eigenen und proprietären Lösungen ebenfalls allgemeine Normen, die das Ziel haben, einen einheitlichen Standard unabhängig von einer speziellen Anwendung zu definieren. Zwei der populärsten und am weitesten verbreiteten Ansätze sind GraphQL und Representional State Transfer (REST).
Was verbirgt sich hinter REST und GraphQL?
Sowohl GraphQL wie auch REST dienen dazu, eine Grundstruktur für eine allgemein verständliche und einsetzbare API vorzugeben. Es handelt sich allerdings lediglich mit Einschränkungen um eine konkrete Schnittstelle mit einer festen und genormten Struktur sowie Befehlen, sondern prinzipiell zunächst einmal um zwei unterschiedliche Konzepte oder Architekturen, die jeweils eigene Vorteile und Nachteile aufweisen. Speziell REST verzichtet bewusst darauf, eine einheitliche und universelle Schnittstelle festzulegen, sondern beschreibt primär ein Verfahren für die Kommunikation zwischen Programmen oder Maschinen (Machine-to-Machine oder M2M).
Im Unterschied dazu umfasst GraphQL eine Kombination aus einer SQL-ähnlichen Abfragesprache, einer passenden Laufzeitumgebung für unterschiedliche Programmiersprachen und einem Typsystem für die Beschreibung der API.
Was sind die Merkmale und Vorteile von REST?
Die Entwicklung und der Name von REST gehen auf die Dissertation des US-amerikanischen Informatikers Roy Thomas Fieldings zurück, der unter anderem eine entscheidende Rolle bei der Spezifikation von HTTP als Übertragungsprotokoll für Daten spielte. In seiner Arbeit entwickelt er REST als eine Reihe von Vorgaben, die für eine Kommunikation etwa als API einzuhalten sind. Darunter befinden sich etwa:
- Adressierbarkeit jeder Ressource durch eine weltweit einmalige Adresse in Form einer URL
- Vereinheitlichung der Schnittstelle etwa durch die POST und GET Methode bei HTTP
- Einfache und eindeutige Struktur mit Server und Clients, die die Verbindungen aufbauen
- Nachrichten enthalten alle für das Verständnis notwendigen Daten (Zustandslosigkeit)
- Darstellung von Ressourcen in unterschiedlichen Sprachen wie HTML, JSON oder XML
- Bereitstellung durch einfache URLs durch den Server ohne weitere Informationen
Aus diesem Ansatz ergeben sich zahlreiche Vorteile, während die Nachteile überschaubar bleiben. Die Vorteile umfassen unter anderem:
- Webserver wie NGINX oder Apache als Schnittstelle zur API
- Verwendung von selten geblockten Ports für die Kommunikation
- Eindeutige und einfache Identifizierung der API
- Verwendung von HTTP Methoden wie POST und GET für die Kommunikation
- Unabhängig von Plattform, Betriebssystem und Software
- Unterstützung für mobile Clients und Desktops
- Ausgezeichnete Skalierbarkeit und Performance
Welche Eigenschaften zeichnen GraphQL aus?
Hinter GraphQL steht Facebook, das 2012 die Norm für eine effiziente API zunächst für den internen Gebrauch entwickelte und diese seit 2015 für den allgemeinen Gebrauch als Open Source veröffentlichte. Es handelt sich um eine Kombination aus einer Laufzeitumgebung mit Bibliotheken für wichtige Programmiersprachen wie Java, JavaScript, PHP, Python oder Ruby und einer Datenbank mit einer SQL-ähnlichen Syntax. Eine Abfrage der Validität von Anfragen ist über das Typsystem möglich, das aufgrund seiner individuellen Struktur und spezieller Einträge einen Nutzer identifizieren und authentifizieren kann. Die Vorteile von GraphQL bestehen aus:
- Leichte Integration in eigenen Code durch Bibliotheken
- Kompatibilität mit unterschiedlichen Programmiersprachen und Frameworks
- Vollständige Laufzeitumgebung in Open Source verfügbar
- Direkt Austausch von Informationen im Format einer Datenbank
- Flexible Anpassung der API problemlos möglich
- Unabhängig von einem Webserver oder anderer IT-Infrastruktur
Fazit: Welche API eignet sich für ein bestimmtes Projekt?
Beide Varianten weisen spezifische Vorteile auf, besitzen aber aufgrund ihrer Flexibilität und ihrer Möglichkeiten zur Individualisierung lediglich wenige Nachteile. Für welches Verfahren sich Programmierer entscheiden, hängt oft von der persönlichen Präferenz und weniger von konkreten Einschränkungen ab. Eine Ausnahme bilden Stand-Alone-Applikationen, die ihre API ausschließlich lokal nutzen: Hier zeigt GraphSQL gewisse Vorteile, falls auf den Betrieb weiterer Software wie einem Webserver verzichtet werden soll.
Foto: Markus Winkler von Pixabay
Schreibe einen Kommentar
- Framework
- Entwicklung
Tags zu diesem Artikel
Weitere Webhoster
Weitere interessante Artikel
PHP oder JavaScript - wer ist besser
PHP oder JavaScript. Beide Sprachen unterscheiden sich in vieler Hinsicht voneinander. Wir zeigen Gemeinsamkeiten und Un...
Im Jahr 2006 riefen wir hosttest ins Leben, um den Webhosting Markt im DACH-Raum transparenter zu machen. Mit derzeit über 400 Webhostern und über 10.000 Angeboten bieten wir dir die beste Grundlage, den für dich passenden Anbieter für Hosting-Leistungen zu finden.
Seit 2015 küren wir zudem alljährlich unsere Webhoster des Jahres und würden uns in Zukunft auch über deine Stimme freuen.
Mehr über uns...