GraphQL hat die Art und Weise, wie Apps APIs nutzen, revolutioniert. Statt fester Endpunkte fordert der Client genau die Daten an, die er benötigt. In diesem Leitfaden werden GraphQL, ein Vergleich mit REST und die Implementierung in mobilen Apps vorgestellt.
Was ist GraphQL
Definition
Von Facebook entwickelte Abfragesprache für APIs.
Konzept
Der Client definiert die Antwortstruktur, nicht der Server.
Schema
Typisierter Vertrag, der verfügbare Daten definiert.
GraphQL vs. REST
Übermäßiges Abrufen
REST gibt feste Daten zurück. GraphQL gibt nur die Bestellung zurück.
Unterabruf
REST erfordert möglicherweise mehrere Aufrufe. GraphQL in einer Abfrage.
Flexibilität
Der Kunde kontrolliert, was er erhält.
Versionierung
GraphQL entwickelt Schema ohne API-Versionen.
Grundlegende Konzepte
Abfrage
Daten abrufen. Lesevorgänge.
Mutation
Daten ändern. Schreiboperationen.
Abonnement
Echtzeitdaten über WebSocket.
Schema
Definition von Typen und Operationen.
Lösen
Funktion, die Daten für jedes Feld abruft.
Vorteile für Mobilgeräte
Datenökonomie
Weniger Bytes übertragen.
Weniger Latenz
Ein Anruf vs. mehrere.
Zuerst offline
Der intelligenteste Cache, der möglich ist.
Tippen
Schema als Vertrag. Codegenerierung.
Backend-Implementierung
GraphQL-Server
Apollo Server, GraphQL Yoga, Hasura.
Schemadesign
Modelldomäne, nicht Datenbank.
Resolver
Rufen Sie Daten aus beliebigen Quellen ab.
###DataLoader
Batchverarbeitung, um n+1 Abfragen zu vermeiden.
Mobile Clients
###ApolloClient
iOS, Android, React Native. Reich an Funktionen.
Relais
Facebook. Meinungsorientiert, optimiert.
GraphQL-Anfrage
Nimm es. Für einfache Fälle.
Codegenerierung
Aus dem Schema generierte Typen. Typensicherheit.
Abfragesprache
Felder
Geben Sie genau an, was Sie wollen.
Argumente
Filtern und anpassen.
Aliase
Benennen Sie Felder in der Antwort um.
Fragmente
Auswahl wiederverwenden.
Variablen
Dynamische Parameter.
Mutationen
Syntax
Ähnlich wie eine Abfrage, aber zum Ändern.
Eingabetypen
Komplexe Objekte als Parameter.
Antwort
Aktualisierte Daten zurückgeben.
Optimistisches Update
UI-Updates vor der Antwort.
Abonnements
Anwendungsfälle
Chat, Benachrichtigungen, Echtzeit-Feeds.
Transport
WebSocket, SSE.
Caching
Aktualisiert den Cache automatisch.
Caching
Normalisierter Cache
Nach ID gespeicherte Entitäten.
Richtlinien abrufen
Cache-First, nur Netzwerk, Cache-und-Netzwerk.
Ungültigmachung
Cache nach Mutationen aktualisieren.
Beharrlichkeit
Persistenter Cache für offline.
##Leistung
Komplexität der Abfrage
Begrenzen Sie Tiefe und Komplexität.
Paginierung
Cursor-basiert für große Listen.
Anhaltende Abfragen
Hash statt vollständiger Zeichenfolge.
CDN
Edge-Caching für öffentliche Abfragen.
Sicherheit
Authentifizierung
Token im Header.
Autorisierung
Validieren Sie Berechtigungen für Resolver.
Ratenbegrenzung
Nach Vorgang, nicht nach Endpunkt.
Abfragetiefe
Begrenzen Sie die Tiefe, um Missbrauch zu verhindern.
Fehlerbehandlung
Teilerfolg
GraphQL kann Daten und Fehler zurückgeben.
Fehlertypen
Anpassen nach Fehlertyp.
Kundenhandling
Gehen Sie mit Fehlern elegant um.
Werkzeugausstattung
###GraphiQL/Spielplatz
Schnittstelle zum Erkunden des Schemas.
Codegeneratoren
graphql-codegen. Automatische Typen.
Apollo Studio
Überwachung, Schemaregistrierung.
Fusseln
eslint-plugin-graphql.
REST-Migration
Allmählich
Fügen Sie GraphQL neben REST hinzu.
Föderation
Mehrere Dienste GraphQL vereint.
Verpackung
GraphQL vor vorhandenem REST.
Best Practices
Schema zuerst
Definieren Sie das Schema vor der Implementierung.
Benennung
Klare Konventionen. PascalCase-Typen, CamelCase-Felder.
Dokumentation
Beschreibungen im Schema.
veraltet
Markieren Sie veraltete Felder.
Wann man GraphQL verwenden sollte
Gut für
- Mobile Apps mit komplexen Daten
- Mehrere verschiedene Kunden
- Schnelle Produktiteration
Nicht ideal für
- Einfache APIs
- Umfangreicher Datei-Upload
- Intensive Echtzeit (denken Sie an gRPC)
Fazit
GraphQL ist leistungsstark für mobile Apps, die Effizienz und Flexibilität erfordern. Lernen Sie die Konzepte kennen, wählen Sie den passenden Stack und setzen Sie ihn diszipliniert um. Das Ergebnis sind schnellere Apps und eine produktivere Entwicklung.
##FAQs
1) GraphQL ersetzt REST? Nicht unbedingt. Jeder hat Anwendungsfälle. Sie können koexistieren.
2) Ist GraphQL langsamer als REST? Nicht von Natur aus. Es kommt auf die Umsetzung an.
3) Muss ich das Backend neu schreiben? Nein. GraphQL kann vorhandene Dienste umschließen.
4) Mobilspezifisch oder funktioniert es für das Web? Funktioniert für jeden Kunden. Mobile Vorteile haben viele Vorteile.
5) Ist Apollo obligatorisch? Nein. Es ist beliebt, aber es gibt Alternativen.
Lesen Sie auch
- Moderne GraphQL-APIs: Schemadesign, Leistung und Muster, die funktionieren
- GraphQL in Anwendungen: Kosten, Preise und eine Checkliste vor der Einführung
- Backend für Anwendungen: Architektur, Technologien und Best Practices
- Microservices in Anwendungen: Verteilte Architektur für Mobilgeräte
- GraphQL für Anwendungen: Kosten und Preise mit realen Fällen
- API für Anwendungen
