Здесь вы найдете аналогичный вопрос: Какой подходящий код состояния HTTP для возврата службой API REST для отказа проверки?
В ответе в приведенном выше разделе говорится, что "например, если URI должен иметь дату ISO-8601, и вы обнаружите, что он в неправильном формате или относится к 31-му февраля, тогда вы вернете HTTP 400. То же самое если вы ожидаете хорошо сформированного XML в теле объекта и не разбираетесь."
Однако, что произойдет, если пользователь отправит правильно отформатированные данные? Под этим я подразумеваю, что пользователь представил строчную алфавитную строку/текст для имени пользователя и пароля (что совершенно верно для моего приложения). Единственная проблема заключается в том, что пароль не совпадает с именем пользователя. В этом случае 400 будет некорректным, поскольку он является вполне корректным синтаксисом и хорошо сформированным.
A 401 будет неправильным (как предлагается здесь: Какой код состояния HTTP для указания имени пользователя или пароля был неверным?), поскольку пользователь не пытается получить доступ к какой-либо странице, он просто пытается войти и ввести данные, которые не совпадают.
Если вы оглянетесь на первое сообщение, с которым я связался, во втором ответе говорится, что 422 является правильным ответом (и это выглядит правильно для меня), однако я использую Django Rest Framework, а 422 не является частью статуса коды (список кодов состояния, которые являются частью DRF, можно найти здесь: http://www.django-rest-framework.org/api-guide/status-codes/#client-error-4xx)
404 также выглядит не так, потому что данные успешно приняты и не отклонены.
С учетом сказанного, каков реальный правильный ответ, который следует использовать?