Какие плюсы и минусы GraphQL?
DOM и браузер
GraphQL — язык запросов к API, где клиент сам указывает, какие данные ему нужны. У него есть плюсы (гибкость, один запрос) и минусы (сложность, кеширование).
Плюсы
- Точная выборка — клиент запрашивает ровно нужные поля, без over-fetching (лишних данных) и under-fetching (нехватки).
- Один запрос — связанные данные из разных сущностей одним обращением (нет «водопада» запросов).
- Строгая схема и типизация — самодокументируемый контракт, автогенерация типов.
- Версионирование не нужно — поля добавляют/депрекейтят без новых версий API.
- Интроспекция — инструменты (GraphiQL) для изучения API.
Минусы
- Сложность на сервере — резолверы, схема, оптимизация запросов (проблема N+1).
- Кеширование сложнее — единый POST-эндпоинт против URL-based кеша REST.
- Риск тяжёлых запросов — клиент может запросить слишком много (нужны лимиты глубины/стоимости).
- Overkill для простого API — REST проще для CRUD.
- Загрузка файлов и статус-коды — менее естественны, чем в REST.
GraphQL против REST
- REST — фиксированные эндпоинты, простое кеширование, риск over/under-fetching.
- GraphQL — гибкая выборка одним запросом ценой серверной сложности.
Коротко для собеседования
GraphQL — клиент запрашивает точные данные одним запросом по строгой схеме. Плюсы: нет over/under-fetching, типизация, без версионирования. Минусы: сложность сервера, тяжёлое кеширование, риск дорогих запросов. Для простого CRUD часто проще REST.