какой http код ответа для службы покоя на методе put, когда правила домена недействительны - PullRequest
12 голосов
/ 03 февраля 2010

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

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

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

Ответы [ 3 ]

25 голосов
/ 03 февраля 2010

Как насчет 422?

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

RFC 4918, раздел 11.2

4 голосов
/ 03 февраля 2010

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

3 голосов
/ 03 февраля 2010

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

...