Служба RESTful, как ответить, если проверка не удалась? - PullRequest
19 голосов
/ 20 января 2012

У меня есть служба, которая принимает какую-то сущность и должна сохранить / обновить эту сущность:

http://myhost.com/rest/entity

Я использую POST и отправляю JSON. Внутри сервиса он обнаруживает, что передаваемая сущность не годится. Недействительно, заказ передан с несуществующим клиентом и т. Д.

Как мне ответить? HttpCode.NotFound? Или другие? Как вы отвечаете на такие вещи?

Ответы [ 3 ]

29 голосов
/ 21 января 2012

422 Необработанный объект, определенный в WebDAV (RFC 4918) :

Код состояния 422 (Unprocessable Entity) означает, что сервер понимает тип содержимого объекта запроса (следовательно, код состояния 415 (Unsupported Media Type) не подходит), и синтаксис объекта запроса является правильным (таким образом, 400 (Неверный запрос) код состояния не подходит), но не удалось обработать содержащиеся в нем инструкции. Например, это условие ошибки может возникать, если тело запроса XML содержит правильно сформированные (то есть синтаксически правильные), но семантически ошибочные инструкции XML.

25 голосов
/ 20 января 2012

В нашем проекте в таких ситуациях мы делаем следующее:

  1. Установить код ответа HTTP 400 Bad Request
  2. Установить тело ответа для следующего JSON: {"message":"%extended error message here%"}

Но это действительно очень субъективно.

Также я бы предложил прочитать Эта статья в блоге об обработке ошибок RESTfull - в ней описано множество доступных опций, поэтому вы можете выбрать что-то на свой вкус.

1 голос
/ 20 января 2012

Я думаю, вы должны выбрать код ошибки клиента . 400 Плохой запрос или 403 Запрещено может быть хорошим началом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...