© Evgeny Atamanenko/Shutterstock.com
Kiosk Specials
Entwicklung eines GraphQL-API-Servers mit Spring Boot

In den Stiefeln von GraphQL

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.

Michael Schäfer


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 [1] zu finden.

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 ...

Kiosk Specials
Entwicklung eines GraphQL-API-Servers mit Spring Boot

In den Stiefeln von GraphQL

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.

Michael Schäfer


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 [1] zu finden.

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 ...

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