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).
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.
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:
Aus diesem Ansatz ergeben sich zahlreiche Vorteile, während die Nachteile überschaubar bleiben. Die Vorteile umfassen unter anderem:
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:
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
Datenschutz | Widerrufsbelehrung | AGB | Impressum | Rechenzentrum Info | Profi Server Info | Plesk und cPanel Info | Downloads