GraphQL — это язык запросов для API и среда выполнения этих запросов.
Он был разработан Facebook в 2012 году и опубликован в 2015 году.
В отличие от REST, где нужно обращаться к разным endpoint'ам, GraphQL позволяет получить именно те данные, которые вам нужны — одним запросом.
🚀 Почему стоит использовать GraphQL?
| Возможность | Преимущество |
|---|---|
| Один endpoint | Все запросы идут через один URL (например, /graphql) |
| Только нужные данные | Клиент сам выбирает поля, нет лишней информации |
| Вложенные запросы | Можно получать связанные данные за один запрос (user → posts) |
| Сильная типизация | Четко описанная схема данных |
| Без версий API | Изменения в API делаются через схему, без v1, v2 и т.д. |
| Реальное время | Поддержка подписок (subscriptions) для обновлений данных |
📄 Как работает GraphQL?
1. Клиент отправляет запрос:
query {
user(id: "1") {
name
email
posts {
title
likes
}
}
}
Запросит:
-
Пользователя с
id = 1 -
Его
имяиemail -
Список его постов с
titleиlikes
2. Сервер возвращает только эти данные:
{
"data": {
"user": {
"name": "Алиса",
"email": "[email protected]",
"posts": [
{
"title": "GraphQL для новичков",
"likes": 120
},
{
"title": "Продвинутые запросы",
"likes": 75
}
]
}
}
}
🧱 Основы схемы GraphQL
Схема описывает структуру API.
Пример:
type User {
id: ID!
name: String!
email: String!
posts: [Post]
}
type Post {
id: ID!
title: String!
likes: Int
}
type Query {
user(id: ID!): User
}
-
type User: определяет тип пользователя -
Query: определяет доступные запросы -
!: означает, что поле обязательно
🔧 Где используется GraphQL?
-
Мобильные приложения — меньше трафика, только нужные поля
-
Веб-приложения — быстрые и гибкие интерфейсы
-
Микросервисы — объединение данных из разных источников
-
Панели администрирования и аналитика — сложные вложенные запросы
🛠 Популярные инструменты и библиотеки
| Инструмент | Назначение |
|---|---|
| Apollo | Клиент и сервер для работы с GraphQL |
| Relay | Фреймворк от Facebook |
| GraphiQL | Веб-интерфейс для тестирования запросов |
| Hasura | Мгновенный GraphQL поверх PostgreSQL |
⚖️ GraphQL vs REST — сравнение
| GraphQL | REST |
|---|---|
| Один endpoint | Много endpoint'ов |
| Только нужные данные | Часто — больше или меньше, чем нужно |
| Без версий | Часто требуется v1, v2 |
| Гибкая схема | Нет строгой схемы данных |
💡 Вывод
GraphQL — это современный подход к API.
Он делает приложения быстрее, упрощает разработку и дает больше контроля над данными.