GraphQL API-Entwicklung
Facebooks Abfragesprache für datengetriebene Unternehmensanwendungen
In diesem Workshop gewinnen Sie tiefe Einblicke in die GraphQL-Spezifikation, die Umsetzungen von GraphQL APIs auf Serverseite und die clientseitige Entwicklung mit React und GraphQL-Clientbibliotheken. Sie erlernen, wie verschiedene Datenquellen, wie etwa SQL- bzw. NoSQL-Datenbanken oder RESTful-Services, eingebunden und mittels Resolver-Funktionen und Data-Batching effizient abgefragt werden können. Abschließend werden verschiedene Möglichkeiten der sinnvollen Einbettung von GraphQL APIs in die Gesamtarchitektur, mögliche Migrationsstrategien wie beispielweise der Einsatz als API-Gateway für Microservices und Makroservices erläutert.
Einstieg
- Unternehmensanwendungen mit Client-Server-Kommunikation per GraphQL als Antwort auf die Probleme beim Einsatz von Webservices mit dem Programmierparadigma „Representational State Transfer“
- Vorteil einer vergleichsweise losen Kopplung bei gleichzeitig komplexen Datenabfragen
- Spezifikation und Umsetzung von GraphQL-konformen Datenhierarchien
- Effiziente Abfrage und Änderung von Datenquellen
- Integration von GraphQL in bestehende Anwendungsarchitekturen
- Der richtige Umgang mit datenintensiven Anwendungen
- Entwurf, Veröffentlichung, Einsatz und Wartung von GraphQL APIs im Unternehmen und der Öffentlichkeit
- GraphQL-Serveranwendungen mit Node.js
- Konzepte für modulare, skalierbare und wartbare GraphQL-Serveranwendungen
- GraphQL Queries und Mutations
- „N+1 select“-Problem mittels Batching sowie DataLoader lösen
Erstellung von GraphQL APIs
- GraphQL-Architektur
- Pro und Kontra zu REST und Hypermedia
- Werkzeuge
- Versionierung
- GraphiQL (browserbasierte IDE für GraphQL)
- Erstellung von GraphQL-Schemas mit Built-in Types
- Scalar
- Object
- Interface
- Union
- Input
- List
- Enum
- Erstellung von GraphQL-Schemas mit Custom Types
- GraphQL shorthand notation
- Implementierung von Value-Resolvern
- Erstellung von Queries und Mutations
- Verwendung von Variablen
- Verwendung von Direktiven
- Verwendung von Subscriptions (Pub / Sub)
- Best Practices
Testen von GraphQL / React / Relay
- Werkzeuge für Unit Tests
- Jest
- Jasmine
- Mocha
- Unit Tests bei GraphQL
- Unit Tests und React-Komponenten
- Ende-zu-Ende-Tests
- Selenium
- PhantomJS
- WebDriver
Konsumieren von GraphQL APIs
- Einsatz via HTTP / AJAX
- Lokka, Apollo, Relay als Client
- Wiederverwendung mit Query-Fragmenten
React, Relay und GraphQL
- Babel for ECMAScript 2015, JSX & RelayQL
- Verwendung von Webpack
- Erstellung von React-Komponenten, Stateless Functions, DOM-Elemente
- Composing React-Komponenten
- React component lifecycle
- React-Zustandsverwaltung und Datenbindung (Initial / Update Loop)
- Arbeiten mit Formularelementen
- Verwendung des React-Router / React-Relay-Router
- Server rendering
- Relay client GraphQL extensions
- Relay Node interface
- Paging mit Relay
GraphQL in der Systemarchitektur
- GraphQL für Datenbankabfragen
- GraphQL als API-Aggregator (Backend for frontend)
- GraphQL APIs für Microservices (Backend for frontend)
- Skalierung von GraphQL APIs
- Optimistic UI / Long-running transactions und Sagas
Voraussetzungen
- Einfaches JavaScript-Wissen
- Node.js, F# oder Python nach Wahl (vollständige Gruppe vorausgesetzt)
- Texteditor (z. B. Sublime Text, Notepad++ oder Atom)