Когда использовать GraphQL?
DOM и браузер
GraphQL используют, когда клиентам нужна гибкая выборка данных из множества связанных сущностей одним запросом, и REST порождает over-/under-fetching.
Когда GraphQL — хороший выбор
- Разные клиенты с разными потребностями — мобайл и веб запрашивают разный набор полей одного API.
- Сложные связанные данные — получить пользователя, его посты и комментарии одним запросом вместо нескольких REST-обращений.
- Избежать over/under-fetching — клиент берёт ровно нужные поля, не лишнее и не недостаточное.
- Быстро меняющиеся требования к данным — новые поля без новых версий API и без изменений сервера у большинства случаев.
- Агрегация нескольких источников — GraphQL как слой над разными сервисами (BFF).
query {
user(id: 1) {
name
posts { title comments { text } }
}
}Когда GraphQL не нужен
- Простой CRUD → REST проще.
- Нужно HTTP-кеширование по URL → REST удобнее.
- Небольшое приложение, один клиент → накладные расходы GraphQL не оправданы.
- Простые файловые загрузки, стриминг → REST/специализированные протоколы.
Цена
Сложность сервера (резолверы, N+1), нетривиальное кеширование, риск дорогих запросов (нужны лимиты глубины/стоимости).
Коротко для собеседования
GraphQL применяют, когда нужна гибкая выборка связанных данных одним запросом и разные клиенты берут разные поля (нет over/under-fetching), а требования часто меняются. Для простого CRUD с кешированием по URL проще REST. Цена GraphQL — сложность сервера и кеширования.