c't 11/2021
S. 181
Test & Beratung
Buchkritik

Daten elegant abrufen

GraphQL bietet sich an, wenn Webdienste sauber strukturierte Daten ausliefern sollen – auch auf sehr komplexe Anfragen hin. Dominik Kress führt Praktiker in diese Alternative zum gängigen REST-Paradigma ein.

Softwareentwickler können GraphQL für Dienste verwenden, die unterschiedliche Online-Datenquellen anbinden. Kress zeigt, wo das Arbeiten mit GraphQL gegenüber dem gängigen REST-Modell (Representational State Transfer) zu signifikanten Ersparnissen in puncto Netzlast und gleichzeitig zu elegantem, kompaktem Code führen kann.

Im Zuge einer allgemeinen Einführung in APIs beleuchtet der Autor außer REST noch weitere Standards wie gRPC und JSON:API. Er konzentriert sich dabei nicht auf Details dieser Techniken, sondern auf Aspekte, die unabhängig von konkreten Implementierungen sind. Ausführlich widmet er sich der Syntax und Semantik von GraphQL. Die Sprache verlangt eine penible Definition von Objekten und ihren Beziehungen zueinander. Diese manifestieren sich in Schemas; Leser erhalten konkrete Ratschläge zu deren Entwurf.

Kress beschreibt Mechanismen zur Fehlerbehandlung bei GraphQL-Diensten – also bei Prozessen, welche die Sprache als Schnittstelle nutzen. Zudem behandelt er wichtige Querschnittsthemen wie die Autorisierung, die Dokumentation und das Caching.

Beim Aufbau zweier praxisnaher Codebeispiele geht er Schritt für Schritt in die Tiefe. Mit JavaScript, Node.js und dem Apollo-Framework verwirklicht er eine Wunschlistenfunktion in einem Onlineshop. Die erste Version des Dienstes wirkt noch sehr prototypisch. Beim Aufräumen erklärt Kress, wie man GraphQL-Dienste in Node.js möglichst übersichtlich strukturiert. Anschließend erweitert er sein Projekt um Mutationen: Der Dienst kann Daten dann nicht nur lesen, sondern auch verändern. Analog zum Gezeigten setzt Kress danach einen Bestellprozess mit Java und Spring Boot um.

Wer die Beispiele nachvollziehen will, muss sich entweder mit JavaScript und Node.js oder mit Java und Spring Boot auskennen. Die übrigen Bereiche des Buches dienen auch weniger Sattelfesten als taugliche Einführung in GraphQL. Besonders sympathisch wirkt, dass Kress eine kritische Distanz zum Gegenstand seines Leitfadens wahrt. Er behandelt GraphQL nicht wie das einzig sinnvolle Werkzeug für datenorientierte Webdienste, sondern erwähnt auch die Grenzen des Konzepts. (Maik Schmidt/psz@ct.de)

Kommentieren