Важной частью при интеграции является обработка ошибок, которые возвращает сервер ddapp. При работе с API для обработки ошибок используются Коды состояний HTTP, а так же Коды ошибок API.
Коды состояний HTTP делятся на классы:
Код | Описание |
---|---|
200 (OK) | Запрос выполнен успешно. Информация, возвращаемая с ответом зависит от метода, используемого в запросе, например: GET Получить объект, соответствующий запрошенному ресурсу в ответ; POST Созданный объект или иной результат действия; |
201 (Created) | Запрос был выполнен, и, в результате, создан новый ресурс. Подтверждение успешного создания (например посредством POST или PUT запроса). Заголовок Location содержит ссылку на только что созданный ресурс (при POST запросе). |
202 (Accepted) | Запрос был принят на обработку, но она не завершена. |
204 (No Content) | Запрос был успешно обработан. Статус используется, когда ответ не используется или когда нет контента (например при выполнении команды DELETE). |
Код | Описание |
---|---|
400 (Bad Request) | Запрос не удалось обработать из-за синтаксической ошибки. Клиенту НЕ СЛЕДУЕТ повторять такой запрос без изменений. |
401 (Unauthorized) | Для доступа к запрашиваемому ресурсу требуется аутентификация. Код используется для пропущенного или не корректного токена аунтефикации. |
403 (Forbidden) | Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. |
404 (Not Found) | Используется тогда, когда ресурс не был найден, не существует или был 401 или 403, но из соображений безопасности сервер не ответил этими кодами. |
405 (Method Not Allowed) | Указанный клиентом метод нельзя применить к текущему ресурсу. |
409 (Conflict) | Запрос не может быть выполнен из-за конфликтного обращения к ресурсу. Такое возможно, например, когда два клиента пытаются изменить ресурс с помощью метода PUT. |
Код | Описание |
---|---|
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 — необходимо обработать ответ, чтобы определить тип ошибки и в случае необходимости изменить запрос или отправить его повторно.
Код ошибки | Код состояния 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 | Внутренняя ошибка сервера. |
{ "error":{ "code":"InvalidInput", "message":"One or more errors occurred.", "details":[ { "code":"InvalidInput", "message":"The specified Delivery Type Id is not valid." } ] } }
{ "error":{ "code":"AuthenticationFailed", "message":"Server failed to authenticate the request. Make sure the value of the Authorization header is formed correctly including the signature." } }
{ "error":{ "code":"InternalError", "message":"We apologize but an unexpected error occured. Please try again later." } }