Как правило, коды состояния 4xx сообщают клиенту, что запрос не выполнен, но может быть успешным, если запрос смоделирован. Коды 5хх информируют клиента о проблемах, на которые клиент не имеет влияния.
Итак, первое различие, которое вы должны сделать, - это коды 4xx и 5xx, то есть сообщить клиенту, следует ли повторить попытку.
HTTP 400 «Неверный запрос» следует использовать, если запрос действительно синтаксически искажен, неполон, противоречит или иным образом в корне неверен.
Кроме того, это может быть действительный статус по умолчанию в диапазоне 4xx, если никакое другое состояние не представляется подходящим, и вы считаете, что клиенту нужно только изменить запрос для успешного выполнения.