API v2: Планы развития
EMD Cloud активно работает над версией 2.0 API, которая будет полностью соответствовать принципам RESTful архитектуры и современным стандартам разработки API.
Что меняется?
Полная RESTful архитектура
API v2 будет строго следовать принципам REST:
- Единообразные URL — предсказуемая структура эндпоинтов
- Правильное использование HTTP методов — GET, POST, PUT, PATCH, DELETE по назначению
- Статусные коды — корректные HTTP коды для всех сценариев
- HATEOAS — гипермедиа-ссылки в ответах для навигации по API
Улучшенная структура ответов
{
"data": {
"_id": "507f1f77bcf86cd799439011",
"name": "Иван Петров",
"email": "ivan@example.com"
},
"meta": {
"timestamp": "2024-01-15T10:30:00Z",
"version": "2.0"
},
"links": {
"self": "/api/v2/users/507f1f77bcf86cd799439011",
"collection": "/api/v2/users"
}
}
Версионирование
API v2 будет доступен по отдельному пути:
https://api.emd.one/api/v2/app/{app-id}/...
Текущая версия (v1) продолжит работать по существующим адресам:
https://api.emd.one/api/app/{app-id}/...
API v1 будет поддерживаться минимум 2 года после релиза v2, что даёт достаточно времени для миграции.
Новые возможности
1. GraphQL поддержка
Помимо REST, планируется добавить GraphQL endpoint для гибких запросов:
query {
users(filter: { age: { gte: 18 } }, limit: 10) {
_id
name
email
posts {
title
createdAt
}
}
}
2. Webhook v2
Улучшенная система вебхуков с:
- Retry механизмом — автоматические повторы при ошибках
- Подписями запросов — проверка подлинности через HMAC
- Фильтрацией событий — более гранулярный контроль
- Batch events — группировка событий
3. Rate Limiting
Прозрачные лимиты запросов с заголовками:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640000000
4. Расширенная фильтрация
Более мощный язык запросов:
GET /api/v2/users?filter[age][gte]=18&filter[or][0][role]=admin&filter[or][1][role]=manager
5. Partial Responses
Возможность запрашивать только нужные поля:
GET /api/v2/users?fields=_id,name,email
6. Batch Operations
Выполнение множественных операций в одном запросе:
POST /api/v2/batch
{
"operations": [
{
"method": "POST",
"path": "/users",
"body": { "name": "User 1" }
},
{
"method": "POST",
"path": "/users",
"body": { "name": "User 2" }
}
]
}
Улучшения безопасности
OAuth 2.0
Поддержка стандартного протокола OAuth 2.0 для авторизации:
- Authorization Code Flow
- Client Credentials Flow
- Refresh Token Flow
API Keys
Возможность создания API ключей с ограниченными правами:
X-API-Key: emd_live_abc123...
Scopes
Гранулярные права доступа:
database:read database:write storage:read users:admin
Улучшенная документация
OpenAPI 3.1
Полная спецификация API в формате OpenAPI 3.1:
- Автоматическая генерация клиентов
- Валидация запросов/ответов
- Интеграция с популярными инструментами
Интерактивные примеры
Больше примеров кода на разных языках:
- JavaScript/TypeScript
- Python
- PHP
- Go
- Ruby
- Java
- C#
Postman коллекции
Готовые коллекции для Postman с примерами всех методов.
Производительность
Кэширование
Поддержка HTTP кэширования с заголовками:
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
Cache-Control: max-age=3600
Сжатие
Автоматическое сжатие ответов (gzip, brotli).
Pagination Cursors
Эффективная пагинация для больших наборов данных:
{
"data": [...],
"pagination": {
"next": "eyJpZCI6IjEyMyJ9",
"prev": "eyJpZCI6IjEwMCJ9",
"hasMore": true
}
}
Миграция с v1 на v2
Совместимость
API v2 не будет обратно совместим с v1, но мы предоставим:
- Руководство по миграции — пошаговая инструкция
- Mapping таблицы — соответствие эндпоинтов v1 и v2
- Миграционные скрипты — автоматизация перехода
- Dual-mode SDK — поддержка обеих версий в SDK
Период перехода
- Анонс v2 — за 3 месяца до релиза
- Beta период — 2 месяца тестирования
- Релиз v2 — стабильная версия
- Поддержка v1 — минимум 2 года после релиза v2
- Deprecation v1 — постепенное выведение из эксплуатации
Обратная связь
Мы хотим услышать ваше мнение! Если у вас есть предложения по улучшению API v2:
- GitHub Discussions — обсуждение функций
- Feature Requests — запросы новых возможностей
- Beta Testing — участие в тестировании
Ориентировочные сроки
| Этап | Срок |
|---|---|
| Публикация спецификации | Q2 2025 |
| Открытая Beta | Q3 2025 |
| Стабильный релиз | Q4 2025 |
| Полная документация | Q4 2025 |
Сроки являются ориентировочными и могут измениться в процессе разработки.
Что дальше?
- Текущее API — начните работать с существующей версией
- Примеры — изучите практические примеры
- SDK — используйте готовые библиотеки