GraphQL – язык запросов к API и спецификация сервера, разработанные в Facebook (внутреннее использование с 2012 года, открыт в 2015 году). Клиент описывает структуру нужных данных, и сервер возвращает ровно эти поля. С 2018 года развитием спецификации занимается GraphQL Foundation.
Как работает
- Сервер публикует схему: типы данных, поля и связи между ними.
- Клиент отправляет запрос (query) с перечнем полей, изменения выполняются мутациями (mutation), подписки (subscription) дают обновления в реальном времени.
- Обычно используется одна точка входа, например /graphql.
Плюсы и минусы
- Нет лишних данных и лишних запросов: связанные сущности получаются за один вызов.
- Строгая типизация и самодокументируемая схема.
- Сложнее кеширование на уровне HTTP и контроль нагрузки: тяжёлые вложенные запросы нужно ограничивать по глубине и сложности.
Когда выбирают
GraphQL удобен для веб- и мобильных клиентов с разными экранами и для агрегации данных из нескольких сервисов. Для простых интеграций между системами чаще используют REST.