ИМХО Запрос проверки всегда должен возвращать 400.
422 предназначен для различного назначения - https://tools.ietf.org/html/rfc4918#section -11,2
11.2. 422 Unprocessable Entity
Код состояния 422 (Unprocessable Entity) означает, что сервер
понимает тип содержимого объекта запроса (следовательно, код состояния
415 (Unsupported Media Type) не подходит), и синтаксис
объекта запроса является правильным (таким образом, код состояния 400 (неверный запрос)
не подходит), но не смог обработать содержащиеся в нем инструкции. Например, это условие ошибки может возникать, если тело запроса XML
содержит правильно сформированные (то есть синтаксически правильные), но
семантически ошибочные, XML инструкции.
Если ваш запрос не прошел проверку, это означает, что его синтаксис неверен.
После успешного завершения проверки вы можете выполнить дополнительные проверки и вернуть 422.
Но посмотрите на это проблема с другой точки зрения.
Неужели так важно различать guish между 400 и 422? Реалистично ли c, что клиентское программное обеспечение (не человеческое) получит от него какие-либо преимущества?
Я сосредоточен на программном обеспечении, потому что люди могут читать сообщения, а коды для нас избыточны.
Позвольте мне привести пример правильной реакции программного обеспечения на код состояния.
Надежные системы должны поддерживать разные коды ошибок и различать guish случаев, когда повторная попытка может помочь доставить сообщение по сравнению со случаями, когда повторная попытка бесполезна, поскольку она всегда дает сбой (если мы не изменим код сервера). Возвращая 400, мы даем подсказку клиенту, что повторная попытка не поможет. Клиент может реализовать переход в коде и повторить запрос для 500 и завершить sh выполнение для 400.
Добавляет ли дополнительный код 422 какое-либо значение?