Проверка запроса на регистрацию пользователя должна вернуть 200 или 400

Клиент отправляет вполне действительный запрос на регистрацию пользователя, например имя пользователя Пароль.

Сервер обнаруживает, что имя пользователя уже занято. Какой правильный статус возврата - 200 с сообщением об ошибке или 400? В спецификации говорится:

400 означает, что с запросом что-то не так. Код состояния ответа на неверный запрос протокола передачи гипертекста (HTTP) 400 указывает, что сервер не может или не будет обрабатывать запрос из-за чего-то, что воспринимается как ошибка клиента (например, неверный синтаксис запроса, недопустимое формирование сообщения запроса или вводящий в заблуждение запрос маршрутизация).

Но технически в запросе нет ничего плохого.


person hyankov    schedule 12.03.2019    source источник


Ответы (1)


«Неправильно» то, что запрос был предназначен для создания нового пользователя, но это не удалось, потому что имя пользователя уже было занято. Это определенно относится к категории «ошибка клиента». Вместо того, чтобы видеть «ошибку клиента» как «есть ошибка», лучше подумать о том, что «по той или иной причине запрос не удался, и клиент должен внести исправление».

Типичный код ошибки для этой конкретной ситуации может быть 409 Conflict.

Если вы отправили обратно 200, клиент должен воспринимать результат как «Мой запрос успешно выполнен», что определенно не так.

person Evert    schedule 12.03.2019
comment
Спасибо. Отметим как ответ. Это довольно ясно, когда вы объясняете это таким образом. - person hyankov; 12.03.2019
comment
@HristoYankov классный! - person Evert; 12.03.2019