HTTP-код для возврата для неподдерживаемого PATCH

Я реализую метод PATCH на ресурсе REST dropwizard. В настоящее время только часть свойств ресурса может быть исправлена. И в настоящее время может быть выполнена только операция замены.

Какой код HTTP я должен вернуть, если увижу PATCH запросить свойство / путь, который не поддерживается? И что я должен вернуть, если неподдерживаемый add или же remove операции запрашиваются?

2 ответа

Решение

Какой код HTTP я должен вернуть, если увижу PATCH запросить свойство / путь, который не поддерживается?

В этой ситуации сервер должен вернуться 405 чтобы указать, что метод HTTP не поддерживается целевым ресурсом. Помимо кода состояния, сервер должен вернуть Allow заголовок, перечисляющий поддерживаемые методы для этого ресурса:

6.5.5. 405 метод не разрешен

405 Код состояния (метод не разрешен) указывает, что метод, полученный в строке запроса, известен серверу происхождения, но не поддерживается целевым ресурсом. Исходный сервер ДОЛЖЕН генерировать Allow поле заголовка в 405 ответ, содержащий список поддерживаемых в настоящее время методов целевого ресурса.


И что я должен вернуть, если неподдерживаемый add или же remove операции запрашиваются?

Я полагаю, вы имеете в виду add а также remove Операции из JSON Patch, документа JSON, который описывает последовательность операций для применения к документу JSON и подходит для использования с PATCH HTTP метод.

Итак, взгляните на раздел обработки ошибок в RFC 5789, документ, который определяет PATCH HTTP метод.

Ситуация, описанная в вашем вопросе, фактически является сущностью, которая не может быть обработана сервером по семантическим причинам. Так 422 Это разумный выбор, согласно RFC 5789:

Необработанный запрос: может быть указан с 422 Ответ (Unprocessable Entity), когда сервер понимает документ исправления, и синтаксис документа исправления представляется действительным, но сервер неспособен обработать запрос. Это может включать попытки изменить ресурс таким образом, чтобы ресурс стал недействительным; например, модификация правильно сформированного XML-документа, которая больше не будет правильно формироваться. [...]

Также имейте в виду следующую рекомендацию из того же документа:

Тело сущности ответов об ошибках ДОЛЖНО содержать достаточно информации, чтобы сообщить природу ошибки клиенту. Тип содержимого объекта ответа может варьироваться в зависимости от реализации.

RFC 7807 определяет форматы документов, которые можно использовать для сообщения о проблемах в HTTP API.

Мой голос будет 405:

405 метод не разрешен

Метод запроса не поддерживается для запрошенного ресурса; например, запрос GET для формы, которая требует представления данных через POST, или запрос PUT для ресурса, доступного только для чтения.

В сочетании с предложением Кассио относительно предоставления информации, достаточной для описания ошибки.

Другие вопросы по тегам