GraphQL
Реклама. ООО «ЛитРес», ИНН: 7719571260.
Оглавление
Dominik Kress. GraphQL
GraphQL
Vorwort
Für wen ist dieses Buch?
Was soll dieses Buch vermitteln?
Inhaltsverzeichnis
1API-Grundlagen
1.1Was ist ein API?
1.2Vorteile eines API
1.2.1Flexibilität für Anbieter und Konsument
1.2.2Einheitliches Design und Funktionen
1.2.3Neue Geschäftsfelder
1.2.4Innovationstreiber API
1.3API: Die Definition
1.3.1API-Vertrag
1.3.2Die Akteure eines API
1.3.3Release-Arten von APIs
1.4Mögliche API-Technologien und -Spezifikationen
1.4.1Geschichte der Remote Execution
Die 1990er- bis 2000er-Jahre
Das Web 2.0
Heute und in Zukunft
1.4.2RESTful HTTP
1.4.3JSON:API
1.4.4gRPC
gRPC in der Verwendung
Vor- und Nachteile von gRPC
1.4.5GraphQL
Das Graphenschema
Die GraphQL-Querys
1.4.6Die Technologien im Vergleich
Fazit
2Von der Idee zur Umsetzung
2.1API Value Chain
2.1.1Geschäftsmodelle für private und öffentliche APIs
2.2Release-Arten
2.2.1Private APIs
2.2.2Öffentliche APIs
2.3Erste Schritte: Allgemeines Vorgehen
2.3.1Use Cases identifizieren
Beispiel: Produkte finden
2.3.2Funktionale Anforderungen
2.3.3Nicht-funktionale Anforderungen
2.3.4Die gemeinsame Sprache
2.3.5Gemeinsames Vokabular durch Schema.org erzeugen
3Grundlagen der GraphQL-API
3.1Das Graphen-Modell erzeugen
3.2Abfragen mit GraphQL
3.2.1Grundlegende Querys
3.2.2Querys generell
3.2.3Verschachtelte Querys
3.2.4Parameter in Querys
3.2.5Variablen in Querys
3.2.6Aliases in Querys
3.2.7Fragmentierte Querys
3.2.8Direktiven in Querys
3.2.9Inline-Fragmente in Querys
3.2.10Metafelder in Querys
3.2.11Mutationen: Datenmanipulation mit GraphQL
3.2.12Subscriptions: GraphQL Message Streaming
3.3Das GraphQL-Typ-System: Schemadefinition
3.3.1Grundlegende Schemas
3.3.2Skalar-Typen
3.3.3Enumerations-Typen
3.3.4Typ-Modifikatoren: Listen und Non-Null
3.3.5Parameter
3.3.6Input-Typen
3.3.7Interfaces
3.3.8Union-Typen
4API-Design I: Rund ums Schema des API
4.1Qualitätsmerkmale
4.2Designempfehlungen
4.2.1Schemadesign-Empfehlungen
Geschäftsperspektive über Implementierungsdetails
IDs und das Node-Muster
Vorsicht mit den Feldern und deren Typisierung
Geschäftslogik-Felder
4.2.2Mutation-Designempfehlungen
Input-Typen
Rückgabewerte der Mutation
4.3HTTP: Netzwerk-Design
4.3.1POST-Requests
4.3.2GET-Requests
4.3.3Responses
4.4Pagination
4.4.1Splicing
4.4.2Offset-basierte Pagination
4.4.3Cursor-basierte Pagination
4.4.4Edges und Connections
4.5Fehlermanagement
4.5.1Application Errors
4.5.2Type und Validation Errors
4.5.3Fehler mit partiellen Ergebnissen
4.5.4Fehler ohne Teilergebnisse
5API-Design II: Die Landschaft um das API
5.1Autorisierung
5.1.1GraphQLs Probleme mit Autorisierung
5.1.2Autorisierung auf Ebene der Geschäftslogik
5.2Dokumentation
5.2.1Statische Dokumentation
5.2.2Dynamische Dokumentation
5.3Versionierung
5.3.1GraphQLs Evolution im Beispiel
5.4Monitoring und Instrumentation
5.4.1Feingranulares Monitoring
5.4.2Verstehen, wie das API genutzt wird
5.5Performanzoptimierung: Caching und Batching
5.5.1Das 1+n-Problem
5.5.2DataLoader
5.5.3CDN-Caching
5.5.4Clientseitiges Caching
6Implementierung mit Node I: Das erste Schema
6.1Use Case
6.2Initiales Aufsetzen des Projekts
6.2.1Das Node.js-Projekt aufsetzen
6.2.2Den GraphQL-Server mit Apollo aufsetzen
6.3Das initiale Schema aufsetzen
6.3.1Parameter und erste Resolver-Logik
6.3.2Feld-Level-Resolver und Interfaces
6.3.3Interfaces und Filter für IDs
6.3.4Typrelationen
7Implementierung mit Node II: Erweitertes Schema und Mutationen
7.1Schema-Modularisierung
7.1.1Technische Separation
7.1.2Domain-Separation
7.1.3Resolver Map aufteilen und Models durch Context verteilen
7.2Mutationen
7.2.1Ein Produkt erstellen
7.2.2Produkt löschen
7.2.3Wunschliste mit Input-Typen erstellen
7.2.4Wunschlisten kaskadierend löschen
8Implementierung mit Java I: Das erste Schema
8.1Use Case
8.2Das Projekt aufsetzen
8.2.1Den GraphQL-Server aufsetzen
8.3Das initiale Schema aufsetzen
8.3.1Objekte im Schema auflösen
8.3.2Feld-Resolver
8.3.3Das Node-Muster
8.3.4Ergebnisse filtern durch Parameter
8.3.5Objekt-Relationen
8.3.6ID-Referenz-basierte Objekt-Relationen
9Implementierung mit Java II: Erweitertes Schema und Mutationen
9.1Selbstdefinierte Skalar- und Geschäftslogik-Felder
9.1.1Skalar-Typ in Schema und POJO definieren
9.1.2Die GraphQLScalarType-Implementierung
9.1.3Geschäftslogik-Felder und -Parameter
9.2Mutationen erstellen und Schemamodularisierung
9.2.1Kunden registrieren
9.2.2Adressen löschen
9.2.3Adressen erstellen: Input-Typen
9.2.4Bestellung erstellen: verschachtelte Input-Typen
Literaturverzeichnis
Index
Отрывок из книги
Dominik Kress ist Software Engineer mit Heimat im E-Commerce. In seiner langjährigen Arbeit bei der größten Retail-Gruppe Europas hilft er bei der Modernisierung der internationalen Onlineshop-Systeme. Bei der Transformation von einem klassischen On-Premise-Monolithen zu einer Cloud-basierten Self-Contained-Systems-Architektur entwickelte und vertiefte sich seine Liebe zum Thema APIs. Sowohl im Umfeld seiner Arbeit als auch in privaten Projekten probiert er sich leidenschaftlich gerne an neuen Technologien, Spezifikationen und Methodiken. Daher ist für ihn der Austausch von Wissen und Erfahrungen auf Veranstaltungen und Konferenzen, die er auch gerne selbst nebenbei organisiert, besonders wichtig.
Eine Einführung in APIs mit GraphQL
.....
7.2.3Wunschliste mit Input-Typen erstellen
7.2.4Wunschlisten kaskadierend löschen
.....