Какой правильный код статуса после тестирования, если адрес электронной почты существует в базе данных или нет? - PullRequest
0 голосов
/ 07 июля 2019

Мы используем конкретную конечную точку в нашем API, чтобы проверить, зарегистрирован ли адрес электронной почты в нашей базе данных.Когда это не так, какой код статуса будет правильным для возврата клиенту?

Мы не можем принять решение между 404, 204 и 200. Есть несколько статей в сети, но все плюсы и минусы состоянияно это не очень понятно.

1 Ответ

0 голосов
/ 07 июля 2019
  • 200 говорит, что запрос был успешным
  • 204 говорит, что запрос был успешным И что тело сообщения, включенное в ответ, имеет длину 0 байт.
  • 404 говорит, что естьтекущая реализация не связана с запрошенным ресурсом

То, что является правильным, действительно зависит от вашего дизайна ресурса.

Рассмотрим запрос к базе данных с предложением where - если нетсопоставляя строки, вы получите УСПЕХ с пустым набором результатов.Таким образом, аналогичной вещью в ответе HTTP будет код состояния 2xx и тело, описывающее пустой набор.

Если бы вы использовали список JSON в качестве представления набора, то представление было бы двумядлина байта [] и код состояния 200.Если бы вы использовали представление json lines с каждой записью в отдельной строке, то без записей у вас не было бы строк, поэтому 0-байтовое представление и 204 было бы хорошим выбором.

Как насчет случая, когда у нас есть простая веб-страница, которая сообщает вам, зарегистрирован ли адрес электронной почты или нет?Если он зарегистрирован, сервер отвечает сообщением 200 и HTML-документом, в котором говорится о регистрации.Если он не зарегистрирован, вы получите html-сообщение о том, что адрес электронной почты не зарегистрирован ... и 200, потому что мы смогли найти текущее представление ресурса.

А 404?404 указывает клиенту, что в target-uri запроса http, по-видимому, произошла орфографическая ошибка - что даже ничего не найдено.

Это может помочь понять, что коды состоянияметаданные об HTTP-ответе, то есть они являются частью прикладной области передачи документов по сети , а не бизнес-доменом.Они существуют для того, чтобы общие компоненты, такие как кеши, могли делать интересные вещи, не зная каких-либо подробностей о рассматриваемом домене.

Наш веб-API является фасадом для создания модели нашего доменавыглядит как скучный магазин документов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...