====== 3.1 GraphQL Grundlagen ======
GraphQL((GraphQL Spezifikation: https://spec.graphql.org/)) ermöglicht flexible, präzise Datenabfragen.
===== Was ist GraphQL? =====
GraphQL((GraphQL Foundation: https://graphql.org/)) ist eine Query-Sprache für APIs und eine Laufzeitumgebung zum Ausführen dieser Queries. Im Gegensatz zu REST((Representational State Transfer: https://de.wikipedia.org/wiki/Representational_State_Transfer)) können Clients genau die Daten anfordern, die sie benötigen.
===== Endpunkt =====
POST /api/v1/dsn/{dbName}/graphql
Content-Type: application/json
===== Einfache Query =====
{
"query": "{ customers { id name country } }"
}
===== Mit Parametern =====
{
"query": "{ customers(first: 10, filter: \"Country eq 'DE'\") { id name } }"
}
===== Schema abrufen =====
GET /api/v1/dsn/demo/graphql/schema
Liefert das GraphQL-Schema im SDL((Schema Definition Language: https://graphql.org/learn/schema/))-Format.
===== Vorteile gegenüber REST =====
^ Aspekt ^ REST ^ GraphQL ^
| Endpunkte | Viele (pro Ressource) | Einer |
| Over-fetching | Häufig | Nie |
| Under-fetching | Häufig (N+1) | Nie |
| Typsicherheit | Optional | Eingebaut |
| Dokumentation | Extern (OpenAPI((OpenAPI Specification: https://www.openapis.org/))) | Integriert (Introspection) |
===== Quellen =====
* [[https://graphql.org/|GraphQL Foundation - Offizielle Website]]
* [[https://spec.graphql.org/|GraphQL Specification]]
* [[https://graphql.org/learn/|GraphQL Learn]]