Какой код ответа HTTP для службы отдыха на методе put, когда правила домена недействительны

Каков наиболее подходящий ответный код для возврата при использовании метода PUT для обновления ресурса, а запрос содержит некоторые данные, которые лишали бы правдоподобных правил домена?

Например, ресурс клиента должен иметь указанное имя. Если агент пытается выдать PUT без предоставления имени, я не хочу обновлять ресурс, и я хочу сообщить вызывающему, что им нужно указать имя.

Какой код ответа HTTP?

Ответ 1

В этом случае код ответа не связан с методом http. Вы должны вернуть тот же код статуса, как если бы это был запрос POST. Я бы сказал, что вы должны использовать 400 или 409 (Примечание: см. Дальнейшее обсуждение различий между ними в комментариях).

Ответ 2

Как насчет 422?

"Код статуса 422 (Unprocessable Entity) означает, что сервер понимает тип содержимого объекта запроса (следовательно, код статуса 415 (неподдерживаемый тип носителя) является неуместным), и синтаксис объекта запроса является правильным (таким образом, 400 (неверный запрос) является неприемлемым), но не смог обработать содержащиеся в нем инструкции. Например, это условие ошибки может возникнуть, если тело запроса XML содержит правильно сформированные (т.е. Синтаксически правильные), но семантически ошибочные инструкции XML."

RFC 4918, раздел 11.2

Ответ 3

Я бы вернул 400. Строго говоря, это для "неправильного синтаксиса" (недействительные данные), но на практике YouTube, Twitter и т.д. использовать его для более "плохих" запросов.