Почему JSON должен иметь свойство статуса

Я наткнулся на практику, которая, как мне показалось, довольно широко распространена. Я даже нашел веб-страницу, которая дала этому имя, но я забыл это имя и больше не могу найти эту страницу в Google.

Практика такова, что каждый ответ JSON от службы REST должен иметь следующую структуру:

{
    "status": "ok",
    "data": {... }
}

или в случае ошибки:

{
    "status": "error",
    "message": "Something went wrong"
}

Мой вопрос :В чем смысл такого свойства «статуса» в JSON? На мой взгляд, именно для этого были созданы коды состояния HTTP.

REST использует средства HTTP для связи между клиентом и сервером, например, глагол «DELETE» должен использоваться для удаления. Точно так же следует использовать 404, если ресурс не найден и т. д. Таким образом, в соответствии с этим мышлением любые случаи ошибок должны быть правильно закодированы в статусе HTTP.

Существуют ли конкретные причины для возврата кода состояния HTTP 200 в случае ошибки и вместо этого ошибки в JSON? Это просто делает условные ветки javascript более сложными при обработке ответа.

Я обнаружил несколько случаев, когда статус может быть «перенаправлен», чтобы указать приложению перенаправить на определенный URL-адрес. Но если бы использовался надлежащий код состояния HTTP, браузер выполнил бы перенаправление «бесплатно», сохраняя историю просмотров должным образом.

Я представляю в основном два возможных ответа от вас:

  • Либо есть два ссорящихся сообщества со своим любимым подходом, каждое из которых (использовать статус HTTP всегда, а не использовать статус HTTP никогда)
  • или я упускаю важный момент, и вы скажете мне, что, хотя статус HTTP должен использоваться в некоторых случаях, есть определенные случаи, когда статус HTTP не подходит, и в игру вступает свойство JSON «статус».
5
задан chiccodoro 11 July 2012 в 13:02
поделиться