Если запрос не может быть правильно обработан (включая объект / тело запроса), соответствующий ответ будет 400 Плохой запрос [ 1 ].
RFC 4918 гласит, что 422 Unprocessable Entity применимо, когда объект запроса синтаксически правильно сформирован, но семантически ошибочен.Поэтому, если объект запроса искажен (например, неправильный формат электронной почты), используйте 400;но если это просто не имеет смысла (например, @example.com
), используйте 422.
Если проблема в том, что, как указано в вопросе, имя пользователя / адрес электронной почты уже существует, вы можете использовать 409Конфликт [ 2 ] с описанием конфликта и подсказкой о том, как его исправить (в данном случае «выберите другое имя пользователя / адрес электронной почты»).Однако в спецификации, как написано, 403 Forbidden [ 3 ] также может использоваться в этом случае, несмотря на аргументы об HTTP-авторизации. [ 4 ] используется, когда заголовок запроса предварительного условия (например, If-Match
), который был предоставлен клиентом , оценивается как ложный.То есть клиент запросил что-то и предоставил предварительные условия, прекрасно зная, что эти предварительные условия могут потерпеть неудачу.412 никогда не должны возникать на клиенте неожиданно и не должны быть связаны с объектом запроса per se .