Как обработать Исключения REST?

Мы посреди продолжающейся дискуссии о том, как обработать исключения REST.

Тип контента ответа: JSON

Два решения мы имеем:

  1. Выдайте все исключения непроверенные как ответ JSON.
  2. Отправьте Запрос Недопустимый Код ответа.

Аргументы:

  • Когда это - ошибка, почему возврат JSON? Просто отправьте недопустимый код ответа.

Встречный аргумент:

  • Код ответа является слишком техническим для обработки для нормальных разработчиков.

Что такое Ваш говорить??

9
задан Donal Fellows 4 November 2011 в 11:56
поделиться

2 ответа

Для недавно разработанного мной JSON API я делаю и то, и другое. Я всегда отвечаю действительным JSON (ну, если я вообще отвечаю). Если я обнаруживаю недействительный запрос, я использую статус 400. Если я обнаруживаю ошибку сервера (которая, по моему мнению, не вызвана недействительным запросом), я использую статус 5xx. Объект JSON содержит специальный ключ, который устанавливается только для ошибок, со строковым значением.

Я считаю, что это хорошее решение, в котором соблюдаются принципы REST, и его можно использовать по-разному. Это же решение используется некоторыми другими API-интерфейсами JSON, такими как Yahoo Search. Попробуйте http://search.yahooapis.com/ImageSearchService/V1/imageSearch?appid=YahooDemo&output=json .

13
ответ дан 4 December 2019 в 11:39
поделиться

Используйте коды ошибок, как для HTTP. Итак, 50 * для любого исключения, вызванного какой-либо внутренней проблемой. И 40 * за плохие аргументы. По возможности избегайте использования ваших собственных кодов. Идея состоит в том, чтобы иметь «единый» интерфейс.

В общем. 204 за успех без отправки контента 200 для успеха с json-представлением ресурса И если операция не удалась, верните соответствующий код ответа. Вы можете при желании вернуть json. Чтобы упростить задачу, вы можете использовать общий формат (json) для всех сообщений об ошибках.

http://en.wikipedia.org/wiki/REST необходимо прочитать, прежде чем останавливаться на своих спецификациях API.

5
ответ дан 4 December 2019 в 11:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: