Michael Schäfer msg systems ag

„GraphQL ist eine neue Technologie, die unter anderem sehr gut für APIs verwendet werden kann. Sie muss den Vergleich mit anderen Technologien, die für APIs verwendet werden – wie beispielsweise REST – nicht scheuen. Ganz im Gegenteil, mit den von GraphQL unterstützten Konzepten der Client-directed Queries und Reactive Clients werden die Anforderungen von modernen Webanwendungen optimal erfüllt und Nachteile von REST ausgeräumt.“

Bei GraphQL handelt es sich um eine Abfrage- und Manipulationssprache für APIs, mit der Clients individuell strukturierte Daten vom Server abrufen können. Bislang sind entsprechende GraphQL-Server vornehmlich in Node.js implementiert. Dabei gibt es von Spring Boot auch eine hervorragend integrierte Implementierung für Java. Dieser Artikel zeigt anhand eines Flugplanungssystems, wie einfach sich mit Spring Boot ein GraphQL-API-Server entwickeln lässt.

Spring Boot vereinfacht und beschleunigt die Entwicklung moderner Webanwendungen auf Java-Basis. Daher findet es gerade in den letzten Jahren immer mehr Anklang in der Java- und Spring-Entwicklergemeinde. Beispielsweise setzt das JHipster-Projekt auf Spring Boot für das Java Backend. Gleichzeitig lassen sich mit Spring Boot auch sehr gut neue Technologien in Spring integrieren und verwenden, etwa Streamingplattformen wie Apache Kafka oder In-Memory-Datenbanken wie Redis.

Dieser Artikel zeigt anhand eines Flugplanungssystems, wie einfach sich mit Spring Boot ein GraphQL-API-Server erstellen lässt. Das Datenmodell des Flugplanungssystems besteht aus einer Flugverbindung (Route) und den konkreten Flügen (Flight) auf dieser Flugverbindung (Abb. 1). Über das GraphQL API soll ein Client alle Flugverbindungen abrufen und neue Flugverbindungen erstellen sowie bestehende löschen und ändern können. Das API soll über OAuth2/JWT geschützt werden und Exception Handling unterstützen. Zusätzlich soll das API Benachrichtigungen an andere Clients schicken, sobald eine neue Flugverbindung erstellt wurde. Vor Auslieferung sollen Integrationstests das GraphQL API des Flugplanungssystems testen. Eine vollständige Implementierung des Beispiels ist unter GitHub zu finden.

Abb. 1: Datenmodell des Flugplanungssystems

Abb. 1: Datenmodell des Flugplanungssystems

Was ist GraphQL?

GraphQL ist eine neue Technologie, die unter anderem für APIs eingesetzt werden kann – in etwa vergleichbar mit RPC, SOAP oder REST. GraphQL wurde 2012 von Facebook initiiert, um die bestehende RESTful API FQL abzulösen. 2016 gab Facebook GraphQL dann für die Öffentlichkeit frei. Dass Facebook so viel Zeit und Geld in ein neues API investiert hat, zeigt, dass REST nicht nur Vorteile, sondern auch einige Nachteile wie Overfetching, Underfetching oder auch die Endpoint Hell mit sich bringt. GraphQL unterstützt mit Client-directed Queries (CDQ) und Reactive Clients (RC) zwei Konzepte, die für moderne Webanwendungen besonders wichtig sind und einige Nachteile von REST ausräumen.

Unternehmen wie GitHub, Netflix oder XING setzen GraphQL bereits ein. APIs sind aber nicht nur für Start-ups oder Internetgiganten wichtig, sondern auch für Enterprises. Mit der Digitalisierung liefern diese immer mehr Webanwendungen an ihre Endkunden aus, und die Anforderungen an die User Experience steigen. Es ist daher auch für Enterprises wichtig, APIs im Backend zu entwickeln, die eine bessere User Experience im Frontend ermöglichen. Die von GraphQL unterstützten Konzepte CDQ und RC helfen ihnen dabei.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 5.19 - "Java 12"

Alle Infos zum Heft
579886728GraphQL-API-Server mit Spring Boot entwickeln
X
- Gib Deinen Standort ein -
- or -