© Hitdelight/Shutterstock.com
Java Magazin
Was der neue API-Ansatz leistet und was nicht

Einführung in GraphQL

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 datengetriebener mobiler Clients hat Facebook GraphQL entwickelt, eine API-Beschreibung und -Anfragesprache, die in den letzten Jahren auch über die Grenzen von Facebook hinaus gewachsen ist.

Alexander Kirschner, Gernot Pointner


Bereits im Jahr 2000 im Rahmen der Dissertation von Fielding [1] vorgestellt, entwickelte sich REST über die Jahre zu einer echten Konkurrenz zu klassischen Web-Services-Technologien wie WSDL. Trotz der immensen Popularität hat der RESTful Ansatz seine Grenzen. Neu entstehende Anwendungsfälle bedingen 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 das die grundlegende Herausforderung und Motivation für die Entwicklung von GraphQL [2]. Der Client erhält Zugriff auf ein als Graph dargestelltes Datenmodell des Servers, gegen das er Anfragen stellen kann. Die zu übertragende Datenmenge lässt sich je nach Anwendungsfall optimieren, indem nur der tatsächlich benötigte Teil der Daten des Servers angefordert wird. Facebook stellt neben der Spezifikation [3] selbst (OWFa-1.0-Lizenz) auch eine passende Referenzimplementierung in JavaScript [4] (MIT-Lizenz) zur Verfügung. Für die Weiterentwicklung der Spezifikation wurde ein RFC-Prozess etabliert [5].

Wie funktioniert GraphQL?

Das zentrale Element eines GraphQL-API ist das Schema, das mittels Interface Definition Language (IDL) beschrieben 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 Schema 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.

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.

Listing 1 zeigt ein GraphQL-Schema für einen beispielhaften Webshop. Das Schema konzentriert sich auf das Auslesen und die Bewertung von Produkten. Listen sind durch eckige Klammern gekennzeichnet, die Ausrufezeichen markieren Felder, die nicht Null sein dürfen. Im unteren Teil des Schemas definiert eine Query das Abrufen eines Pro...

Java Magazin
Was der neue API-Ansatz leistet und was nicht

Einführung in GraphQL

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 datengetriebener mobiler Clients hat Facebook GraphQL entwickelt, eine API-Beschreibung und -Anfragesprache, die in den letzten Jahren auch über die Grenzen von Facebook hinaus gewachsen ist.

Alexander Kirschner, Gernot Pointner


Bereits im Jahr 2000 im Rahmen der Dissertation von Fielding [1] vorgestellt, entwickelte sich REST über die Jahre zu einer echten Konkurrenz zu klassischen Web-Services-Technologien wie WSDL. Trotz der immensen Popularität hat der RESTful Ansatz seine Grenzen. Neu entstehende Anwendungsfälle bedingen 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 das die grundlegende Herausforderung und Motivation für die Entwicklung von GraphQL [2]. Der Client erhält Zugriff auf ein als Graph dargestelltes Datenmodell des Servers, gegen das er Anfragen stellen kann. Die zu übertragende Datenmenge lässt sich je nach Anwendungsfall optimieren, indem nur der tatsächlich benötigte Teil der Daten des Servers angefordert wird. Facebook stellt neben der Spezifikation [3] selbst (OWFa-1.0-Lizenz) auch eine passende Referenzimplementierung in JavaScript [4] (MIT-Lizenz) zur Verfügung. Für die Weiterentwicklung der Spezifikation wurde ein RFC-Prozess etabliert [5].

Wie funktioniert GraphQL?

Das zentrale Element eines GraphQL-API ist das Schema, das mittels Interface Definition Language (IDL) beschrieben 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 Schema 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.

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.

Listing 1 zeigt ein GraphQL-Schema für einen beispielhaften Webshop. Das Schema konzentriert sich auf das Auslesen und die Bewertung von Produkten. Listen sind durch eckige Klammern gekennzeichnet, die Ausrufezeichen markieren Felder, die nicht Null sein dürfen. Im unteren Teil des Schemas definiert eine Query das Abrufen eines Pro...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang