Перейти к основному содержимому

Принципы REST API

EMD Cloud API построен на принципах REST (Representational State Transfer) — архитектурного стиля для создания веб-сервисов.

Что такое REST?​

REST — это подход к проектированию API, который использует стандартные HTTP методы для выполнения операций над ресурсами. Каждый ресурс (коллекция, запись, файл) имеет уникальный URL, а действия над ним выполняются с помощью HTTP методов.

HTTP методы​

API использует стандартные HTTP методы для различных операций:

МетодНазначениеПример
GETПолучение данныхПолучить список записей
POSTСоздание ресурсаСоздать новую запись
PUTПолное обновлениеОбновить всю запись
PATCHЧастичное обновлениеИзменить отдельные поля
DELETEУдаление ресурсаУдалить запись

Структура URL​

URL в API EMD Cloud следует логической структуре:

https://api.emd.one/api/app/{app-id}/{resource}/{id}

Где:

  • {app-id} — идентификатор вашего пространства
  • {resource} — тип ресурса (database, users, storage и т.д.)
  • {id} — идентификатор конкретного объекта (опционально)

Примеры URL​

GET  /api/app/5f2da2f9/database        # Получить список коллекций
POST /api/app/5f2da2f9/database # Создать коллекцию
GET /api/app/5f2da2f9/database/users # Получить записи из коллекции users
PUT /api/app/5f2da2f9/database/users/123 # Обновить запись с ID 123

Формат данных​

JSON​

Все запросы и ответы используют формат JSON. При отправке данных необходимо указывать заголовок:

Content-Type: application/json

Пример запроса​

POST /api/app/5f2da2f9/database/users
Content-Type: application/json

{
"name": "Иван Петров",
"email": "ivan@example.com",
"age": 30
}

Пример ответа​

{
"_id": "507f1f77bcf86cd799439011",
"name": "Иван Петров",
"email": "ivan@example.com",
"age": 30,
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
}

HTTP коды ответов​

API использует стандартные HTTP коды для индикации результата операции:

Успешные ответы (2xx)​

КодЗначениеКогда используется
200 OKУспешноGET, PUT, PATCH запросы
201 CreatedСозданоPOST запросы
204 No ContentНет содержимогоDELETE запросы

Ошибки клиента (4xx)​

КодЗначениеПричина
400 Bad RequestНеверный запросОшибка в данных запроса
401 UnauthorizedНе авторизованОтсутствует или невалидный токен
403 ForbiddenДоступ запрещёнНедостаточно прав
404 Not FoundНе найденоРесурс не существует
422 Unprocessable EntityНевалидные данныеОшибка валидации

Ошибки сервера (5xx)​

КодЗначениеПричина
500 Internal Server ErrorВнутренняя ошибкаОшибка на сервере
503 Service UnavailableСервис недоступенТехнические работы

Формат ошибок​

При возникновении ошибки API возвращает объект с описанием:

{
"error": {
"code": "VALIDATION_ERROR",
"message": "Поле email обязательно для заполнения",
"details": {
"field": "email",
"reason": "required"
}
}
}

Аутентификация​

Для доступа к API необходимо передавать JWT токен в заголовке:

Authorization: Bearer YOUR_JWT_TOKEN

Подробнее об получении токена читайте в разделе Авторизация.

Пагинация​

Для методов, возвращающих списки, поддерживается пагинация через параметры:

GET /api/app/5f2da2f9/database/users?limit=20&offset=0

Параметры:

  • limit — количество записей на странице (по умолчанию 50, максимум 100)
  • offset — смещение от начала списка

Ответ включает метаданные о пагинации:

{
"data": [...],
"meta": {
"total": 150,
"limit": 20,
"offset": 0
}
}

Фильтрация и сортировка​

API поддерживает фильтрацию и сортировку данных через параметры запроса:

GET /api/app/5f2da2f9/database/users?filter[age][$gte]=18&sort=-createdAt

Подробности о синтаксисе фильтров смотрите в интерактивной документации вашего пространства.

Что дальше?​