Введение
API — это интерфейс, через который наше приложение может общаться с внешними источниками данных, будь то серверы, базы данных или сторонние сервисы. Без API ваш мобильный проект будет стоять на месте, как заблокированный смартфон. Вот что делает API незаменимым:
- Динамичность и интерактивность. Пример — приложение для новостей. Оно будет получать актуальные данные через API.
- Отделение логики. Все "умные" вещи (например, обработка больших данных, аутентификация) происходят на сервере. Мобильное приложение занимается отображением данных.
- Масштабируемость. Изменения на стороне сервера не требуют обновления приложения у пользователей, достаточно обновить API.
Представьте, что ваш API — это курьер, который передает вашему приложению посылки с данными. Главное, чтобы курьер умел читать ваши инструкции и доставлял правильные посылки (GET). Иногда вы можете отправлять запросы (POST), иногда изменять что-то уже отправленное (PUT), а иногда удалять посылки (DELETE).
REST и GraphQL: кто есть кто?
Теперь давайте разберемся, как API выглядит и как оно может поставлять данные вашему приложению. На сцене два главных актера — REST и GraphQL. Оба они предоставляют способ запрашивать и отправлять данные, но делают это по-разному.
REST: привычный способ
REST (Representational State Transfer) — это архитектурный стиль (не путать с фреймворками), основанный на ресурсах. Каждый ресурс (например, "пользователь", "заказ", "товар") представлен уникальным URL, и взаимодействие с ним происходит через HTTP-методы.
Пример работы REST API:
GET /users/1
{
"id": 1,
"name": "Алиса",
"email": "alice@example.com"
}
- Методы запросов:
GET: получение данных.POST: отправка новых данных.PUT: изменение существующих.DELETE: удаление.
Плюсы REST:
- Простота и четкая структура.
- Широкая поддержка и стандартность.
Минусы REST:
- Иногда возвращает ненужную лишнюю информацию.
- Для сложных запросов может потребоваться множество вызовов API.
GraphQL: современный подход
GraphQL — это язык запросов, который придумали в Facebook в 2015 году. Главная его сила — в гибкости. С GraphQL вы сами описываете, какие данные вам нужны, и получаете ровно их — не больше и не меньше.
Пример работы GraphQL API:
query {
user(id: 1) {
id
name
email
}
}
Ответ:
{
"data": {
"user": {
"id": 1,
"name": "Алиса",
"email": "alice@example.com"
}
}
}
- Основные концепции:
- Query: запрос данных.
- Mutation: изменение данных.
- Subscriptions: возможность получать обновления в реальном времени.
Плюсы GraphQL:
- Вы сами определяете, какие данные вам нужны.
- Один запрос вместо нескольких.
- Можно запрашивать данные с разных источников в одном запросе.
Минусы GraphQL:
- Больше сложностей в настройке.
- Возможны проблемы с кэшированием.
Таблица сравнения REST и GraphQL
| Характеристика | REST | GraphQL |
|---|---|---|
| Гибкость запросов | Фиксированные ресурсы | Полная кастомизация |
| Работа с данными | Лишние данные (оверфетч) | Только нужные данные |
| Множество вызовов | Да | Нет, один запрос |
| Простота | Очень прост в использовании | Требует обучения |
| Инструменты | Много готовых решений | Реже, но активно развиваются |
Архитектурные паттерны и протоколы API
Архитектура клиент-сервер
В мобильных приложениях логика делится на клиентскую (React Native) и серверную части (API). Клиент не знает, где и как сервер хранит данные, а сервер не беспокоится о том, как клиент эти данные визуализирует.
Протоколы HTTP/HTTPS
Протокол HTTP — это основа работы REST и GraphQL. Они используют методы, такие как:
- GET (получение данных),
- POST (отправка данных),
- PUT (обновление данных),
- DELETE (удаление).
А HTTPS — это тот же HTTP, но с использованием SSL/TLS для защиты данных. Если ваш API отправляет конфиденциальные данные, HTTPS обязателен.
Примеры использования API в мобильных приложениях
Пример 1: приложение для погоды (REST)
Ваше приложение отправляет запрос GET /weather?city=London, чтобы получить погоду в Лондоне. API возвращает JSON с информацией о температуре, влажности и прогнозе осадков.
Пример 2: приложение для социальных сетей (GraphQL)
Вы хотите загрузить ленту новостей и количество лайков для каждого поста. GraphQL позволяет запросить только нужные поля: тексты постов, картинки и количество лайков, а не описание автора или другие лишние данные.
Как выбрать между REST и GraphQL?
Используйте REST, если:
- Ваш API простой и поддерживает стандартные операции (CRUD).
- Вы хотите стабильное решение с минимальной настройкой.
- Удобный кэш и стандартные программные интерфейсы.
Выберите GraphQL, если:
- Вам нужна гибкость в запросах.
- Вы хотите минимизировать количество запросов к API.
- Несколько источников данных должны быть объединены без лишних вызовов.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ