GraphQL

Was zunächst wirkt, wie die lose Aneinanderreihung unterschiedlicher Buchstaben, ist eine Abfragesprache, die APIs flexibler, schneller und entwicklerfreundlicher macht.

GraphQL bietet eine vollständige sowie verständliche Beschreibung der API-Daten, gibt genau die Daten aus, die wirklich benötigen werden und ermöglicht die schnelle, einfache sowie kontinuierliche Weiterentwicklung von APIs.


Was ist eine API?


APIs (Application Programming Interface) sind nahezu unverzichtbar für die Entwicklung und Integration von Anwendungssoftware. Eine API umfasst Tools, Protokolle und Definitionen, welche die Kommunikation von Produkten und Services - unabhängig von ihrer Implementierung – ermöglichen.

APIs vereinfachen Entwickler/innen die Integration neuer Anwendungskomponenten in eine bereits bestehende Architektur.

Einfach ausgedrückt handelt es sich bei einer API um eine Programmierschnittstelle. Diese ist notwendig, wenn andere Services auf Daten eines Webprojektes zurückgreifen sollen. Der Datenaustausch und die Datenweiterverarbeitung sind mit einer API möglich.

Standards wie SOAP oder REST geben die Grundstruktur einer API vor und werden für die Entwicklung sowie Implementierung einer API Schnittstelle verwendet. Diese Grundstruktur kann grundsätzlich von jeder gängigen Programmiersprache angesteuert werden.

Auch wenn sich REST zu einer der beliebtesten Lösungen entwickelt hat, ist die Abfragesprache GraphQL nicht zu unterschätzen und überzeugt mit einigen Vorteilen gerade bei komplexen Abfragen.

Mehr zu APIs, deren Funktionen und Formen lesen Sie in unserem Beitrag über REST-API.


Was ist GraphQL?


2012 von Facebook entwickelt, hat sich die zunächst für den unternehmensinternen Gebrauch benötigte Abfragesprache auf dem Markt etabliert.

Steigende Komplexität und zunehmende Performanceschwäche der mobilen Facebook-Apps für iOS und Android waren die ausschlaggebenden Gründe für die Entwicklung von GraphQL.

Das Großunternehmen musste insbesondere für die Auslieferung der Newsfeed-Daten eine passende Lösung finden, welche dem Verhältnis zwischen abgerufenen Informationen und notwendigen Serverabfragen standhält.

Bereits seit 2015 ist der GraphQL-Quellcode frei verfügbar (Open Source-Lösung). Für den Datenzugriff mobiler Apps ist GraphQL inzwischen unverzichtbar geworden.


Wie funktioniert GraphQL?


Die Vielfalt an Open Source-Projekten, die sich mit GraphQL befassen und die Einführung von GraphQL erleichtern sollen, zeichnen sich durch drei elementare Komponenten aus. Zusammen stellen sie ein API-Gerüst, welches zum einen enorm wandelbar und zum anderen problemlos in den jeweiligen Code der Projekte integriert werden kann.


Die Abfragesprache


GraphQL beschreibt eine Abfragesprache – auch Query Language. Diese ermöglichen Programmen einen unkomplizierten Zugriff auf eine API. Anders als andere Schnittstellen-Entwicklungen überzeugen GraphQL-Abfragen mit einem hohen Maß an Flexibilität. Die Abfrage der Datenfelder kann gezielt definiert werden. Erlaubt sind sowohl lesende, schreibende als auch verändernde Abfragen.
Grafik: Client - GraphQL - API


Die Laufzeitumgebung


Für die Ausführung der GraphQL-Abfragen arbeitet GraphQL mit verschiedenen Server-Laufzeitumgebungen. Bibliotheken für sämtliche Programmiersprachen (Java, JavaScript, PHP, u.v.m.) stehen Entwicklern/Entwicklerinnen zur Verfügung.

Sowohl die Umwandlung (Parsen) und Validierung der Abfragen als auch die Serialisierung der Antworten fällt in den Aufgabenbereich der Laufzeitumgebung.

Die Ermittlung sowie die Speicherung der Daten ist allerdings von der Laufzeitumgebung unabhängig. Diese Aufgaben werden von der entsprechenden Webanwendung abgedeckt.



Das Typsystem


GraphQL-APIs sind nicht nach Endpunkten, sondern nach Typen und Feldern organisiert. Das Zurückgreifen auf diese Typen soll sicherstellen, dass Webanwendungen tatsächlich nur nach dem fragen, was überhaupt möglich ist und falls notwendig hilfreiche Fehlermeldungen liefern. Fehlerhafte Querys (Anfragen) können durch den individuellen Aufbau des Typsystems abgelehnt und Anfragen validiert werden.

Die API kann durch Datentypen beschrieben werden, da GraphQL auf ein eigenes Typsystem zurückgreift. Die definierten Datenstrukturen schaffen dann die eigentliche Umgebung der Abfragen.

Entsprechende Quelltexte werden auf der Webseite von GraphQL ausführlich dargestellt.


Vorteile von GraphQL


GraphQL zeichnet sich nicht nur durch die Einfachheit der Abfragesprache aus. Mit einer GraphQL-Abfrage an die API wird genau das herausgegeben, was abgefragt wurde. GraphQL-Anwendungen sind schnell und stabil, da die Daten und nicht der gesamte Server kontrolliert werden.

Hinzu kommt die immense Flexibilität durch den Einsatz von GraphQL. Abfragen können flexibel gestartet und die Schnittstelle mit einer Vielzahl an Freiheiten entwickelt sowie angepasst werden.

Nicht zu vergessen ist die hierarchische Struktur der Datenbestände, die über GraphQL-APIs abrufbar sind. Die Beziehung zwischen den einzelnen Objekten wird automatisch erzeugt. Komplexe Anfragen können somit in einem Request formuliert, herausgegeben und beantwortet werden. Die Performance von Webanwendungen steigt rasant, da der Austausch zwischen Server und Client nicht mit einer Vielzahl an Nachrichten vonstattengehen muss – GraphQL-APIs enthalten alle Daten, die eine Anwendung benötigt in einer einzigen Anfrage. Das Laden mehrerer URLs ist nicht erforderlich.

Das in GraphQL enthaltene Typsystem teilt jeder Ebene einer GraphQL-Abfrage einen entsprechenden Typ zu. Dieser Typ beschreibt wiederum ein Set verfügbarer Felder. So kann das Typsystem automatisch die Korrektheit einer Abfrage feststellen und schon während der Entwicklung der Anfrage eine Fehlermeldung ausgeben. Die stark definierten Datentypen verringern somit das Risiko einer Fehlkommunikation zwischen Client und Server.

Die Introspektion von GraphQL ermöglicht Kunden die Anforderung einer Liste mit allen verfügbaren Datentypen. Für automatisch erstellte Dokumente ist das ideal.

Darüber hinaus ist die Weiterentwicklung der Anwendungs-API mit GraphQL ohne Beeinträchtigung bestehender Anfragen möglich. Im Gegensatz zu REST-APIs sind die Erweiterungen für Open-Source-GraphQL vielfältig und mit vielen Features versehen. Eine spezifische Anwendungsarchitektur wird von GraphQL nicht vorgeschrieben. GraphQL kann daher ohne Probleme mit aktuellen API-Management-Tools verwendet werden.


Die Vorteile im Überblick

  • Einfache Abfragesprache
  • Passgenau Abfragen
  • Flexibilität
  • Hierarchische Strukturen
  • Ein einziger Request bei komplexen Anfragen
  • Performancesteigerung
  • Verringerung des Risikos einer Fehlkommunikation
  • Vielfältige Erweiterungsmöglichkeiten
  • Der Kunde erhält genau die Daten, die angefragt wurden

Nachteile von GraphQL


Die Nachteile von GraphQL fallen im Vergleich zu den Vorteilen nicht ganz so üppig aus. Sie reichen allerdings von einem weiteren Lernaufwand für Entwickler/innen, über eine steigende Komplexität für Serverentwickler/innen und des Cachings bis hin zu einer neuen Strategie für das API-Management.

Eine neue Strategie für das API-Management ist abhängig von der Implementierung. Unter bestimmten Umständen erfordert GraphQL eine andere Strategie des API-Managements als REST-APIs. Dies mach sich insbesondere bei Limits, Rates und Preisen bemerkbar.


VARIO Warenwirtschaftssoftware

ERP-System mit integrierten Schnittstellen

Informieren Sie sich über das VARIO ERP-System, welches bereits viele integrierte Schnittstellen zu E-Commerce, Versanddienstleistern, FiBu u.v.m. bereithält. Aufgrund der Flexibilität und hohen Skalierbarkeit der VARIO ERP-Software ist diese für kleine und mittelständische Unternehmen aller Branchen geeignet.
Kostenlose Beratung vereinbaren

Kostenlose Beratung vereinbaren

Lassen Sie sich von unseren Experten bezüglich Digitalisierung, E-Commerce oder unserem Warenwirtschaftssystem VARIO in einem kostenlosen Erstgespräch online, bei Ihnen vor Ort oder in unserer Zentrale in Neuwied beraten und erfahren Sie, welche Vorteile die VARIO Software AG mit Ihren Lösungen für Sie bereithält.