Was ist GraphQL?
GraphQL ist eine Abfragesprache für APIs zur Ausführung von Abfragen mit Hilfe eines für die Daten definierten Typensystems. GraphQL ist nicht an eine bestimmte Datenbank gebunden (https://graphql.org/learn/)
GraphQL vs. REST
GraphQL bietet die Möglichkeit, Daten über HTTP zu senden. Jede Anfrage in GraphQL ist eine POST-Anfrage. Der Body enthält die Abfrage für den Server, welcher die Abfrage auflöst. Um Daten zu erhalten, wird eine Query gesendet. Wenn man Daten erstellen, ändern oder löschen möchte, wird eine Mutation gesendet.
GraphQL ist eine flexible Abfragesprache für APIs. Es ermöglicht Entwicklern, genau die Daten zu erhalten, die sie benötigen.
Vor- und Nachteile von GraphQL
Pro:
- Schnelle Prototypenentwicklung
- API-Erweiterung ohne Versionierung
- Autogenerierte API-Dokumentation mit GraphiQL
- Es werden immer die Daten geholt, die benötigt werden
- Loose coupling zwischen Server und Client
Contra:
- Keine simple Caching-Strategie
- Overkill für kleine Anwendungen
- File-Upload nicht möglich
- Komplex beim Einstieg
- Performanceprobleme bei tief verschachtelten Abfragen
GraphQL 101
In dieser kleinen Blog-Serie schauen wir uns einfache Queries und Mutations an. Wir haben eine kleine Testanwendung mit Adressen und Benutzern, diese stehen in einer 1-zu-1 Beziehung zueinander. Die Anwendung wurde mit folgender Technologie umgesetzt:
- .NET Core 2.2
- Entity Framework Core
- GraphQL for .NET (https://graphql-dotnet.github.io/)
- GraphiQL (https://github.com/graphql/graphiql)
- Angular
Query
Die einfachste Art eine Query zu beschreiben ist es, diese mit einem GET-Request à la REST zu vergleichen.