===== Ошибки сервиса ===== ==== HTTP-коды ответа ==== Для указания типа ошибки в ответе сервера, используются стандартные HTTP-коды 4xx-5xx, такие как: \\ === 4xx: Client Error (ошибка клиента): === * 400 Bad Request («неверный запрос») * 401 Unauthorized («не авторизован») * 403 Forbidden («запрещено») * 404 Not Found («не найдено») * 415 Unsupported Media Type («неподдерживаемый тип данных») === 5xx: Server Error (ошибка сервера): === * 500 Internal Server Error («внутренняя ошибка сервера») * 501 Not Implemented («не реализовано») * 503 Service Unavailable («сервис недоступен») ==== Тело ответа - содержимое ==== === 4xx: Client Error (ошибка клиента): === Тело ответа: объект ''Error''. В свойстве ''ValidationErrors'' может находиться массив объектов ''ValidationError'', описывающих некорректные входные данные. === 5xx: Server Error (ошибка сервера): === Тело ответа: объект ''Error''. === Поля класса Error === ^ Имя ^ Тип ^ Обязательное ^ Описание ^ | ErrorCode | string | | Внутренний код ошибки сервиса| | ErrorText | string |✔| Подробное описание ошибки | | ValidationErrors | array | | массив объектов ''ValidationError'' | Следует указывать ''ErrorCode'', используя [[https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP|стандартные коды ответа HTTP]], до тех пор, пока это возможно. Список дополнительных кодов ошибки подлежит обсуждению. Для дополнительных кодов **не следует использовать значения, меньшие 1000**, чтобы избежать путаницы со стандартными HTTP-кодами. === Поля класса ValidationError === ^ Имя ^ Тип ^ Обязательное ^ Описание ^ | EntityType | string |✔| Тип переданной с клиента сущности с некорректными данными. Например: "Profile", "Subscription". | | EntityId | string |✔| ID сущности | | PropertyName | string |✔| Название поля | | PropertyValue | string |✔| Значение поля | | ErrorCode | string | | Внутренний код ошибки | | ErrorText | string |✔| Подробное описание ошибки | ==== Тело ответа - пример ==== { "ErrorCode": "BFG-12-21", "ErrorText": "Incorrect profile data", "ValidationErrors": [ { "EntityType": "Profile", "EntityId": "81844649-4a04-49dc-85a8-56c975597ded", "PropertyName": "Email", "PropertyValue": "foo@bar", "ErrorCode": "ZZ-18", "ErrorText": "wat" }, { "EntityType": "Profile", "EntityId": "81844649-4a04-49dc-85a8-56c975597ded", "PropertyName": "Login", "PropertyValue": "qwe", "ErrorText": "Too short" } ] }