Служба RESTful, как реагировать, если проверка не прошла?
У меня есть служба, которая принимает некоторую сущность и должна сохранять/обновлять этот объект:
http://myhost.com/rest/entity
Я использую POST и отправляю JSON. Внутри службы он обнаруживает, что сущность прошла неправильно. Недействительно, заказ прошел с клиентом, которого не существует, и т.д.
Как мне ответить? HttpCode.NotFound
? Или другие? Как вы отвечаете на такие вещи?
Ответы
Ответ 1
В нашем проекте в таких ситуациях мы делаем следующее:
- Установить код ответа на HTTP 400 Bad Request
- Установить тело ответа на следующий JSON:
{"message":"%extended error message here%"}
Но это действительно очень субъективно.
Также я бы предложил прочитать эту статью в блоге об обработке ошибок RESTfull - она описывает множество доступных опций, поэтому вы можете выбрать что-то по своему вкусу.
Ответ 2
422 Непроцессная организация, определенная в WebDAV (RFC 4918):
Код состояния 422 (необработанная сущность) означает, что сервер понимает тип содержимого объекта запроса (следовательно, код статуса 415 (неподдерживаемый тип носителя) является неуместным), и синтаксис объекта запроса является правильным (таким образом, 400 (Bad Request) неуместен), но не смог обработать содержащиеся инструкции. Например, это условие ошибки может возникнуть, если тело запроса XML содержит правильно сформированные (т.е. Синтаксически правильные), но семантически ошибочные инструкции XML.
Ответ 3
Я думаю, вы должны выбрать код ошибки клиента. 400 Плохой запрос или 403 Запретный может быть хорошим началом