Facebook open-sourcoval GraphQL — dotazovací jazyk pro API, který řeší over-fetching a under-fetching problém REST. Jak GraphQL funguje a kdy ho použít.
Problémy REST API v mobilní éře¶
REST API designované pro webové aplikace často nefungují ideálně pro mobilní klienty. Typické problémy:
- Over-fetching** — endpoint vrací víc dat, než klient potřebuje
- Under-fetching** — klient musí volat více endpointů pro jednu obrazovku
- Verze API** — každá změna vyžaduje nový endpoint nebo verzi
Facebook čelil těmto problémům v roce 2012 při přechodu na nativní mobilní aplikaci. Výsledkem interního R&D je GraphQL.
Jak GraphQL funguje¶
GraphQL je dotazovací jazyk — klient specifikuje přesně, jaká data potřebuje:
query {
user(id: "123") {
name
email
posts(last: 5) {
title
createdAt
comments {
text
author { name }
}
}
}
}
Jeden request, přesně ta data, která potřebujete. Žádné zbytečné přenosy, žádné vodopádové requesty.
Type system a introspekce¶
GraphQL schema definuje typový systém API:
type User {
id: ID!
name: String!
email: String
posts: [Post!]!
}
type Post {
id: ID!
title: String!
content: String
author: User!
}
type Query {
user(id: ID!): User
posts(limit: Int): [Post!]!
}
Introspekce umožňuje nástrojům automaticky generovat dokumentaci a IDE autocomplete. GraphiQL — interaktivní playground — je killer feature pro vývojáře.
GraphQL vs REST: kdy co použít¶
GraphQL není náhrada REST pro všechny scénáře:
- GraphQL** — komplexní datové modely, mobilní klienti, hodně vztahů mezi entitami
- REST** — jednoduché CRUD, file upload/download, caching na HTTP úrovni, public API s jednoduchými endpointy
Pro enterprise aplikace s bohatým frontend doporučujeme zvážit GraphQL jako primární API vrstvu.
Závěr: budoucnost API designu¶
GraphQL mění způsob, jakým přemýšlíme o API. Přesunutí moci ke klientovi — ten definuje, co potřebuje — je fundamentální posun. Sledujte ekosystém (Relay, Apollo) a zvažte GraphQL pro váš příští projekt s komplexním datovým modelem.