Starten Sie ihr Softwareprojekt mit Smartsquare
xing twitter linkedin github

GraphQL - ein Grund zum ausRESTen?

8. Januar 2020 | 12:25 Uhr Von: Ellen Strerath

News von Smartsquare

Am 11.12.2019 war Robin Roschlau, Mitgründer und CTO des Startups Echometer, deren Software stark auf GraphQL setzt, bei uns zu Gast, um seinen Java-User-Group-Bielefeld-Vortrag mit dem Titel „GraphQL - ein Grund zum ausRESTen?“ zu halten. Ein bunt gemischtes Publikum aus knapp 30 Teilnehmern hat sich in gemütlicher Runde bei Pizza, Wein und Coke zusammengefunden, um Robins Vortrag zu lauschen und Fragen loszuwerden.

GraphQL-Vortrag bei Smartsquare

Den Vortrag gibt es übrigens auch als Video online.

Was ist GraphQL?

Begonnen wurde mit der Klärung der Frage danach, was GraphQL denn jetzt eigentlich genau ist. Robin hat dafür erläutert, dass GraphQL eine Open-Source-Datenabfrage- und Manipulationssprache sowie ein Laufzeitsystem zur Durchführung von Abfragen auf vorhandenen Datenbeständen ist. Sie wird als effiziente und flexible Alternative zu REST gesehen. Als zustandslose Abfragesprache ermöglicht sie Clients, die genaue Struktur der benötigten Daten zu definieren. Durch diese Parametrisierung vermeidet GraphQL im Gegensatz zu vielen anderen implementierten REST-Schnittstellen jedoch, bei jeder Anfrage unnötig große Datenmengen zu übermitteln. GraphQL-Schnittstellen sind leicht erkundbar, einfach zu implementieren, und flexibel - soweit das Versprechen. Aber was hat es damit im Detail auf sich? Wie funktioniert das Ganze? Was muss ich beachten? Und natürlich: Ist GraphQL wirklich besser als REST? Diese Fragen wurden im praktischen Teil erläutert!

Wie bedient man GraphQL?

Zu Beginn erklärte uns Robin die Basics, wie er mittels GraphQL eine Schnittstelle definiert. Anschließend führte er uns anhand einer kleinen Beispielanwendung vor, wie die Implementierung einer GraphQL-Schnittstelle aussehen kann.

Für GraphQL Schnittstellen wird zuerst ein Schema angelegt, in dem die Typen, Queries und Mutationen, die die Schnittstelle später zur Verfügung stellt, definiert werden. Wie die einzelnen Teile einer Query oder Mutation aufgelöst werden, wird in sogenannten Resolvern definiert. Je nach Technologie sind einfache Resolver auch bereits automatisch implementiert.

Der Nutzer kann dann Queries auf dem von GraphQL definierten Objektgraphen ausführen und genau angeben, welche Informationen relevant sind. Die GraphQL Implementation parsed dann die Query und ruft je nach angefragen Daten die zuvor implementierten Resolver auf. Eine Query könnte beispielsweise so aussehen:

query Homepage {
  currentUser {
    name, avatarUrl
  }
  tasks {
    status
    title
    assignedUser {
      name, avatarUrl
    }
  }
}

Ein großer Vorteil dabei ist, dass nicht mehr gemacht werden muss als nötig. Außerdem ist Abwärtkomptibilität viel einfacher, weil einfach neue Felder hinzugefügt werden können, die dem Aufrufenden dann nicht zurück gegeben werden, sofern sie noch nicht angefragt werden.

Robins Beispiel wurde in Kotlin mit Ktor als darunterliegendem Webserver gebaut, lässt sich aber sehr ähnlich auf Java mit Spring oder andere JVM-Stacks übertragen. Während des Vortrags hatten die Teilnehmer jederzeit die Möglichkeit Fragen einzuwerfen und auch nach dem Vortrag stand Robin zur Beantwortung und Vertiefung weiterführender Themen zur Verfügung.

GraphQL-Vortrag bei Smartsquare

Die Zeit verging wie im Fluge!

In guter Gesellschaft haben wir viel gelernt und gut gespeist und die Zeit war viel zu schnell vorbei. Wir möchten uns noch einmal bei Robin für seinen informativen und anschaulichen Vortrag bedanken und freuen uns schon auf das nächste Mal. Für Fragen und Anregungen von euch stehen wir gerne zur Verfügung! In diesem Sinne – vielen Dank an alle Teilnehmer und bis bald!

Zurück zur Übersicht