Ответ
GraphQL позволяет клиенту запрашивать только нужные данные, избегая over-fetching (избыточных данных) и under-fetching (недостающих данных). В отличие от REST, где эндпоинты фиксированы, GraphQL предоставляет единую точку входа и гибкий язык запросов.
Пример сравнения:
# GraphQL: запрашиваем только имя и email пользователя
query {
user(id: 1) {
name
email
}
}
# REST: получаем все данные пользователя
GET /users/1
Преимущества:
- Один запрос вместо нескольких (решает проблему N+1)
- Строгая типизация схемы
- Автодокументирование через introspection
- Легкая версионируемость без breaking changes
- Поддержка реального времени через subscriptions