Возможные ошибки API

Общий принцип

Необходимо быть готовым обрабатывать различные ошибки. В этом документе мы опишем http ошибки, которые могут возвращаться со стороны сервиса DealApp, однако так же следует предусмотреть работу с ошибками, которые возникают вне этого сервиса - ошибки доступа по сети.

Как проверить работоспособность сервиса

Сервис DealApp имеет 2 домена: один домен для frontend'a (для облачной версии это app.dealapp.io), другой - для backend API (пример для облачной версии это api.prod1.dealapp.io).
При обращении на домен Backend сервера, возвращается JSON документ с данными о версии приложения. Этот endpoint используется для проверки работоспособности и доступности приложения.

Стандартные Ошибки (http)

В случаях, если API доступно и работоспособно, сервер будет отвечать на запросы с ошибка используя http коды ответов. Это значит, что все запросы с кодом 400+ могут быть интерпретированы, как ошибка. Каждый тип ошибок с кодами 400-500 возвращает дополнительную информацию в JSON формате с сообщением о причинах, по которым происходит ошибка.

400 Invalid Document

Неверно отформатированный запрос. Такая ошибка возвращается, если сервер не может распознать и разобрать документ, который высылается с запросом.
Пример:
{
"status": 400,
"code": "invalid_json",
"title": "Error parsing JSON request"
}

401 Unauthorized

Ошибка авторизации. Такая ошибка происходит в 2ух случаях: либо вы используете неверные данные для логина, либо вы пытаетесь сделать действие, на которое у вас нету прав. Для решения вопроса с авторизацией, обратитесь к соответствующему разделу в документации API.
Пример:
{
"errors": [
{
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Недостаточно прав"
}
]
}

408 Request Timeout

Превышение времени ожидания. Такая ошибка может возникнуть при невозможности получить информацию от внутренних сервисов: недоступность базы данных, ошибка подключения к redis.

422 Unprocessable entity

Ошибка валидации данных. Такая ошибка происходит при POST / PUT / DELETE запросах и означает, что выполняемое действие не соответствует внутренней логике приложения. Также такой ответ может приходить в результате GET запроса с неверными фильтрами.Пример:
{
"errors": [
{
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Недостаточно прав"
}
]
}

500 Internal Server Error

Ошибка в работе сервиса. Такая ошибка может значить нарушение внутренней логики приложения, либо ошибку с инфраструктурой приложения: недоступность или неверная работа контейнерной среды, ошибка подключения к базе данных и прочее.

Ошибки инфраструктуры

При возникновении таких ошибок, обращайтесь в техническую поддержку DealApp.

502 Bad Gateway

Ошибка с доступом (nginx ошибка). Приложение запущено, но не отвечает на запросы. Обычно это происходит при инициализации контейнера, когда приложение еще не запустилось.

503 Service Unavailable

Сервис недоступен (nginx ошибка). Процесс с контейнером сервиса выходит с ошибкой. Обычно это значит, что приложение не может запуститься - в этом случае необходимо ознакомиться с логами приложения и исправить возникающую ошибку.