- 200 говорит, что запрос был успешным
- 204 говорит, что запрос был успешным И что тело сообщения, включенное в ответ, имеет длину 0 байт.
- 404 говорит, что естьтекущая реализация не связана с запрошенным ресурсом
То, что является правильным, действительно зависит от вашего дизайна ресурса.
Рассмотрим запрос к базе данных с предложением where - если нетсопоставляя строки, вы получите УСПЕХ с пустым набором результатов.Таким образом, аналогичной вещью в ответе HTTP будет код состояния 2xx и тело, описывающее пустой набор.
Если бы вы использовали список JSON в качестве представления набора, то представление было бы двумядлина байта []
и код состояния 200
.Если бы вы использовали представление json lines с каждой записью в отдельной строке, то без записей у вас не было бы строк, поэтому 0-байтовое представление и 204
было бы хорошим выбором.
Как насчет случая, когда у нас есть простая веб-страница, которая сообщает вам, зарегистрирован ли адрес электронной почты или нет?Если он зарегистрирован, сервер отвечает сообщением 200
и HTML-документом, в котором говорится о регистрации.Если он не зарегистрирован, вы получите html-сообщение о том, что адрес электронной почты не зарегистрирован ... и 200
, потому что мы смогли найти текущее представление ресурса.
А 404?404 указывает клиенту, что в target-uri запроса http, по-видимому, произошла орфографическая ошибка - что даже ничего не найдено.
Это может помочь понять, что коды состоянияметаданные об HTTP-ответе, то есть они являются частью прикладной области передачи документов по сети , а не бизнес-доменом.Они существуют для того, чтобы общие компоненты, такие как кеши, могли делать интересные вещи, не зная каких-либо подробностей о рассматриваемом домене.
Наш веб-API является фасадом для создания модели нашего доменавыглядит как скучный магазин документов.