Читать книгу GraphQL - Dominik Kress - Страница 6

Inhaltsverzeichnis

Оглавление

Vorwort

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

1.4.2RESTful HTTP

1.4.3JSON:API

1.4.4gRPC

1.4.5GraphQL

1.4.6Die Technologien im Vergleich

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

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

4.2.2Mutation-Designempfehlungen

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

GraphQL

Подняться наверх