GraphQL ist eine API-Technologie, die als Alternative zu bekannten HTTP-basierten APIs wie z.B. REST gilt und zum Beispiel von Atlassian, Twitter oder GitHub eingesetzt wird. GraphQL APIs bieten Clients ein hohes Maß an Flexibilität, denn mit der zugehörigen Abfragesprache können diese gezielt genau die Daten abfragen, die sie für ihre jeweiligen Use-Cases benötigen. Darüber hinaus sind GraphQL APIs typsicher, was dem Client die korrekte Beschreibung seiner Abfragen garantiert.
Allerdings bringt die Flexibilität für den Client im Backend beim Entwurf, Entwicklung und Bereitstellung einer GraphQL API einige Herausforderungen zum Beispiel hinsichtlich Performance und Sicherheit mit sich.
In diesem Seminar lernen Sie die Grundlagen von GraphQL kennen, was GraphQL APIs besonders macht und welche Möglichkeiten Clients mit der GraphQL-eigenen Abfragesprache haben, um Daten zu lesen und zu speichern.
Schritt-für-Schritt sehen wir uns dann an, wie mit Java, Spring Boot und dem Spring-Projekt „spring-graphql“ eine GraphQL API entworfen, beschrieben und implementiert werden kann. Nach dem Seminar kennen Sie Stärken und Schwächen von GraphQL und haben ein Bild, was es bedeutet, GraphQL APIs für die eigene Anwendung bereitzustellen.
Inhalt
- Einführung: Was ist GraphQL überhaupt?
- Typsichere GraphQL APIs definieren
- Syntax und Features der Abfrage-Sprache
- Einsatzmöglichkeiten und Grenzen von GraphQL
- Die Basis: graphql-java
- Das API-Schema beschreiben
- Resolver für Queries, Mutations und Subscriptions mit spring-graphql implementieren
- Verwendung von GraphQL Interfaces und Union Types
- Eigene Datentypen zur Verfügung stellen
- Einbinden von REST APIs
- Absicherung der API mit Spring Security
- Integration von Bean Validation und Fehlerbehandlung
- Testen von GraphQL APIs
- Strategien zur Performance-Optimierung, DataLoader und BatchLoader
Die Entwicklung von Clients für GraphQL APIs ist nicht Bestandteil des Seminars. Bei Interesse können wir Ihnen dafür ein individuelles Inhouse-Seminar anbieten (mit React, Apollo GraphQL und TypeScript).
Voraussetzungen
- Kenntnisse von Java (es wird Java 11 genutzt)
- Kenntnisse von Spring und Spring Boot (insb. Dependency Injection, Annotation-basierte Programmierung, zumindest Grundkenntnisse von JPA)