Alexander Kirschner Entwickler für jambit GmbH

„Die klare und umfassende Spezifikation ist ein nicht zu vernachlässigender Faktor bei einem Einsatz von GraphQL – Teams mit wenig Erfahrung im Bereich Web-API-Design ermöglicht sie, Fehler zu vermeiden und schneller stabile, produktionstaugliche Lösungen zu entwickeln.“

Gernot Pointner Entwickler für jambit GmbH

„Es ist spannend, wie sich die GraphQL-Spezifikation im Rahmen des RFC-Prozesses weiterentwickelt. Aktuelle Themen beschäftigen sich unter anderem mit einer flexibleren Übermittlung der GraphQL-Serverantwort zum Client.“

Der Architekturstil REST ist aus der modernen Web-Services- und Backend-Entwicklung kaum mehr wegzudenken. Eine RESTful Architektur ist aber nicht zwangsläufig für jede Problemstellung automatisch die optimale Lösung. Motiviert von den Anforderungen mobiler Clients hat Facebook GraphQL entwickelt, eine API-Beschreibung und -Anfragesprache, die in den letzten Jahren auch über die Grenzen von Facebook hinausgewachsen ist.

Bereits im Jahr 2000 im Rahmen der Dissertation von Fielding vorgestellt, entwickelte sich REST über die Jahre zu einer echten Konkurrenz zu klassischen Web-Services-Technologien wie WSDL. Eines vorweggenommen: Es gibt nicht den einen optimalen API-Ansatz, der für alle Projekte im Web-Services-Umfeld die optimale Lösung darstellt. Aus funktionalen und nicht funktionalen Anforderungen lassen sich jedoch sinnvolle Kriterien für die Auswahl eines geeigneten API-Ansatzes ableiten. Wie einfach sind beispielsweise die jeweiligen Konzepte und Technologien beherrschbar? Wie lassen sich APIs damit definieren, implementieren, dokumentieren, warten und letztendlich im Alltag verwenden? Wie effizient kann eine Kommunikation über die entsprechende API erfolgen?

Neu entstehende Anwendungsfälle bedingen dabei oftmals neue Anforderungen: Im Jahr 2012 entstand bei Facebook der Bedarf nach einem neuen API-Ansatz, als im Rahmen der Neukonzeption der Smartphoneapplikationen die bestehenden Technologien als nicht ausreichend für die geänderten Anforderungen angesehen wurden. Mobile Clients haben oft mit limitierter und schwankender Verbindungsqualität zu kämpfen. Für Facebook war dies Hauptanforderung und Motivation für die Entwicklung von GraphQL. Der Client erhält Zugriff auf ein als Graph dargestelltes Datenmodell des Servers, an das er Anfragen stellen kann. Die zu übertragende Datenmenge lässt sich je nach Anwendungsfall optimieren, indem nur der tatsächlich benötigte Teil des Datenmodells angefordert wird. Facebook stellt neben der Spezifikation selbst (OWFa-1.0-Lizenz) auch eine passende Referenzimplementierung in JavaScript (MIT-Lizenz) zur Verfügung. Für die Weiterentwicklung der Spezifikation wurde ein RFC-Prozess etabliert.

Wie funktioniert GraphQL?

Das zentrale Element einer GraphQL-API ist das Schema, welches das Datenmodell mittels Interface Definition Language (IDL) beschreibt und von einem Server bereitgestellt wird. GraphQL folgt hier dem Schema-First-Ansatz: Dieses Schema legt den Vertrag zwischen Client und Server fest, die Daten stehen im Vordergrund. Das für das Schema verwendete Datenmodell ist streng typisiert. Neben den primitiven Datentypen Int, Float, String, Boolean und ID sind auch hierarchisch geschachtelte Objekttypen möglich, die selbst wiederum Felder enthalten können. Die Objekttypen entsprechen den Knoten des Graphen, die Felder den Kanten.

Das Schema beschreibt außerdem die Operationen, die sich auf den Objektgraphen anwenden lassen. Man unterscheidet zwischen lesenden Operationen, den Queries, und schreibenden Operation, den Mutations. Die Beschreibung der Operationen ist ebenfalls durch die IDL möglich. So werden die verfügbaren Operationen einfach als zusätzliche Schemaelemente modelliert.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 5.18 - "Maschinelles Lernen"

Alle Infos zum Heft
579833840Einführung in GraphQL
X
- Gib Deinen Standort ein -
- or -