Подтвердить что ты не робот

Коды состояния HTTP: 204 ИЛИ 200 с телом, содержащим пустой объект?

У меня возникли проблемы с пониманием случаев использования кода статуса HTTP HTTP. В RFC2616 говорится:

10.2.5 204 Без содержания

Сервер выполнил запрос, но ему не нужно возвращать сущность-тело и может захотеть вернуть обновленную метаинформацию.
ответ МОЖЕТ включать новую или обновленную метаинформацию в форме сущности-заголовки, которые, если они ДОЛЖНЫ быть связаны с запрошенный вариант.

Если клиент является пользовательским агентом, он НЕ ДОЛЖЕН изменять свой документ из которого был отправлен запрос. Этот ответ в первую очередь предназначена для обеспечения возможности участия в мероприятиях без внесения изменений в просмотр активного документа пользовательского агента, хотя любая новая или обновленная метаинформация ДОЛЖНА применяться к документ, находящийся в активном режиме пользовательского агента.

Ответ 204 НЕ ДОЛЖЕН включать тело сообщения, и, таким образом, всегда заканчивается первой пустой строкой после полей заголовка.

Указывает ли "вид документа" на DOM?

Если, например, я запускаю запрос AJAX, удаляющий пользователя, и я обновляю свою страницу, чтобы удалить пользователя из списка, как только мой запрос будет успешно завершен, если сервер даст мне 200 с {} в качестве ответа или 204 без тела?

Изменить: моя основная проблема связана с "Если клиент является пользовательским агентом, он НЕ ДОЛЖЕН изменять вид своего документа из того, что вызвало отправку запроса". часть. Переформулировать его своими словами: могу ли я обновить DOM, если я верну 204?

4b9b3361

Ответ 1

Указывает ли "вид документа" на DOM?

Не совсем, это означает рендер. DOM не является представлением предоставленного документа. Это абстрактная модель дерева документов. Каждый UA может отображать его по-другому.

Я запускаю запрос AJAX, удаляющий пользователя, и я обновляю свою страницу, чтобы удалить пользователь из списка, как только мой запрос будет успешно завершен, если сервер даст мне 200 с {} в качестве ответа или 204 без тела?

Это зависит от API и того, насколько он "совместим". Итак, если вы отправили запрос удаления с использованием глагола "DELETE" (так, его RESTful API), тогда ответ должен быть 200 OK; но он также может отправить 204, если API особенно педантичен.

Если вы просто отправляете запрос GET в '/some/view? id = 1 & action = delete', он скорее всего вернет 200 OK

В любом случае вы можете изменить DOM (и, таким образом, вызвать повторный рендеринг документа) из-за второй части:

хотя любая новая или обновленная метаинформация ДОЛЖНА применяться к документ, находящийся в активном режиме пользовательского агента.

Таким образом, используя <strike>, чтобы указать, что запись была удалена, будет соответствовать этому требованию.

Ответ 2

Оба действительно действительны. Все зависит от вашего приложения.

Допустимое удаление может возвращать код ответа 200 или 204.

Вид документа ссылается на DOM, да.

Этот вопрос говорит об этом.