GraphQL — query language для API + runtime, разработан Facebook (2015). Один endpoint /graphql, клиент указывает какие поля нужны в response — нет over-fetching / under-fetching как в REST. Типизированная schema. Плюсы: точный data shape, versionless API. Минусы: сложнее caching (единственный endpoint), N+1 queries без DataLoader.
Ниже: подробности, пример, смежные термины, FAQ.
query GetUser($id: ID!) {
user(id: $id) {
name
email
posts(first: 10) {
title
}
}
}GraphQL быстрее для complex UIs (меньше round-trips). REST — для simple CRUD (лучше caching).
DataLoader (Facebook): батчинг + caching per-request. Или persistent queries + query whitelisting.
Да. REST — HTTP cache по URL. GraphQL — нужен application-level cache по query. Apollo Client handles это из коробки.