GitHub oznámil GraphQL API v4 a komunita šílí. Je GraphQL skutečně nástupce REST, nebo je to jen hype? Po třech měsících vývoje s GraphQL sdílíme naše poznatky.
Problém s REST¶
Over-fetching a under-fetching. Endpoint /users/123 vrátí 30 polí, ale mobilní klient potřebuje jen jméno a avatar. Nebo potřebujete uživatele s objednávkami — dva requesty místo jednoho.
Náš pilot: e-commerce katalog¶
query {
product(id: "abc123") {
name
price
category { name }
reviews(first: 5) {
rating
author { name }
}
}
}
Jeden request, přesně ta data co potřebujete. V REST by to byly 3 endpointy.
Výhody¶
- Méně endpointů — jeden /graphql endpoint
- Silné typování — schema je kontrakt
- Introspection — auto-generované docs
- Evoluce bez verzování — přidáváte pole, stará query fungují
Problémy¶
N+1 queries. Řešení: DataLoader pattern. Caching. GraphQL jde přes POST, HTTP cache nefunguje. Monitoring. Jeden endpoint — musíte parsovat query.
Kdy REST, kdy GraphQL¶
GraphQL: více klientů s různými potřebami, komplexní datové modely, mobilní aplikace. REST: jednoduché CRUD, file uploads, webhooky, server-to-server komunikace.
GraphQL je mocný nástroj, ne stříbrná kulka¶
Nenahrazujte REST všude — používejte GraphQL tam, kde jeho výhody převáží náklady na adopci.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns