Мы посреди продолжающейся дискуссии о том, как обработать исключения REST.
Тип контента ответа: JSON
Два решения мы имеем:
Аргументы:
Встречный аргумент:
Что такое Ваш говорить??
Для недавно разработанного мной JSON API я делаю и то, и другое. Я всегда отвечаю действительным JSON (ну, если я вообще отвечаю). Если я обнаруживаю недействительный запрос, я использую статус 400. Если я обнаруживаю ошибку сервера (которая, по моему мнению, не вызвана недействительным запросом), я использую статус 5xx. Объект JSON содержит специальный ключ, который устанавливается только для ошибок, со строковым значением.
Я считаю, что это хорошее решение, в котором соблюдаются принципы REST, и его можно использовать по-разному. Это же решение используется некоторыми другими API-интерфейсами JSON, такими как Yahoo Search. Попробуйте http://search.yahooapis.com/ImageSearchService/V1/imageSearch?appid=YahooDemo&output=json .
Используйте коды ошибок, как для HTTP. Итак, 50 * для любого исключения, вызванного какой-либо внутренней проблемой. И 40 * за плохие аргументы. По возможности избегайте использования ваших собственных кодов. Идея состоит в том, чтобы иметь «единый» интерфейс.
В общем. 204 за успех без отправки контента 200 для успеха с json-представлением ресурса И если операция не удалась, верните соответствующий код ответа. Вы можете при желании вернуть json. Чтобы упростить задачу, вы можете использовать общий формат (json) для всех сообщений об ошибках.
http://en.wikipedia.org/wiki/REST необходимо прочитать, прежде чем останавливаться на своих спецификациях API.