Важной частью при интеграции является обработка ошибок, которые возвращает сервер ddapp. При работе с API для обработки ошибок используются Коды состояний HTTP, а так же Коды ошибок API.

Коды состояний HTTP делятся на классы:

2xx: Success (успешно):

Код Описание
200 (OK) Запрос выполнен успешно. Информация, возвращаемая с ответом зависит от метода, используемого в запросе, например: GET Получить объект, соответствующий запрошенному ресурсу в ответ; POST Созданный объект или иной результат действия;
201 (Created) Запрос был выполнен, и, в результате, создан новый ресурс. Подтверждение успешного создания (например посредством POST или PUT запроса). Заголовок Location содержит ссылку на только что созданный ресурс (при POST запросе).
202 (Accepted) Запрос был принят на обработку, но она не завершена.
204 (No Content) Запрос был успешно обработан. Статус используется, когда ответ не используется или когда нет контента (например при выполнении команды DELETE).

4xx: Client Error (ошибка клиента):

Код Описание
400 (Bad Request) Запрос не удалось обработать из-за синтаксической ошибки. Клиенту НЕ СЛЕДУЕТ повторять такой запрос без изменений.
401 (Unauthorized) Для доступа к запрашиваемому ресурсу требуется аутентификация. Код используется для пропущенного или не корректного токена аунтефикации.
403 (Forbidden) Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу.
404 (Not Found) Используется тогда, когда ресурс не был найден, не существует или был 401 или 403, но из соображений безопасности сервер не ответил этими кодами.
405 (Method Not Allowed) Указанный клиентом метод нельзя применить к текущему ресурсу.
409 (Conflict) Запрос не может быть выполнен из-за конфликтного обращения к ресурсу. Такое возможно, например, когда два клиента пытаются изменить ресурс с помощью метода PUT.

5xx: Server Error (ошибка сервера):

Код Описание
500 (Internal Server Error) Универсальный код ошибки, когда на стороне сервера произошло исключение.
501 (Not Implemented) Сервер не поддерживает функциональных возможностей, необходимых для выполнения запроса.
502 (Bad Gateway) Сервер, выступая в роли шлюза или прокси-сервера, получил некорректный ответ от вышестоящего сервера, к которому он обратился для выполнения запроса.
503 (Service Unavailable) Сервер не может обработать запрос из-за временной перегрузки или технических работ. Это временное состояние, из которого сервер выйдет через какое-то время.
504 (Gateway Timeout) Сервер, в роли шлюза или прокси-сервера, не дождался в рамках установленного таймаута ответа от вышестоящего сервера текущего запроса.

Ознакомиться более детально с кодами состояний HTTP можно по этому адресу: http://www.restapitutorial.ru/httpstatuscodes.html.

Если подвести итог по кодам состояний HTTP, то можно следовать следующему правилу при работе с API: если в ответ клеинту сервер возвращает 4хх или 5xx — необходимо обработать ответ, чтобы определить тип ошибки и в случае необходимости изменить запрос или отправить его повторно.


Коды ошибок API:

Код ошибки Код состояния HTTP Описание
InvalidInput 400 Запрос содержит не корректные данные.
InvalidImportDataType 400 Запрос содержит не корректный тип данных для импорта.
ImportDataTypeNotSupported 400 Указанный тип данных для импорта не поддерживается.
InvalidImportAction 400 Запрос содержит не корректный метод импорта.
ImportActionNotSupported 400 Указыннй метод импорта не поддерживается.
AccessTokenExpired 401 Истек срок действия токен авторизации.
AccessTokenMissingOrMalformed 401 В запросе не указан или указан не корректный токен авторизации.
AuthenticationFailed 401 Серверу не удалось аутентифицировать запрос.
Unauthorized 403 Серверу не удалось авторизовать запрос.
PermissionDenied 403 Клиенту отказано в доступе к запрашиваемому ресурсу или операции.
LicenseNotFound 403 Для доступа к ресурсу или операции необходима активная лицензция.
ResourceNotFound 404 Указанный ресур не найден.
ResourceAlreadyExists 409 Указанный ресур уже содержится.
InternalError 500 Внутренняя ошибка сервера.

  Пример ответа в случае не корректных данных:

HTTP Status Code — 400
{
   "error":{
      "code":"InvalidInput",
      "message":"One or more errors occurred.",
      "details":[
         {
            "code":"InvalidInput",
            "message":"The specified Delivery Type Id is not valid."
         }
      ]
   }
}

  Пример ответа в случае не корректной авторизации:

HTTP Status Code — 401
{
   "error":{
      "code":"AuthenticationFailed",
      "message":"Server failed to authenticate the request. Make sure the value of the Authorization header is formed correctly including the signature."
   }
}

  Пример ответа в случае ошибки на сервере:

HTTP Status Code — 500
{
   "error":{
      "code":"InternalError",
      "message":"We apologize but an unexpected error occured. Please try again later."
   }
}