HTTP-код для возврата для неподдерживаемого PATCH
Я реализую метод PATCH на ресурсе REST dropwizard. В настоящее время только часть свойств ресурса может быть исправлена. И в настоящее время может быть выполнена только операция замены.
Какой код HTTP я должен вернуть, если увижу PATCH
запросить свойство / путь, который не поддерживается? И что я должен вернуть, если неподдерживаемый add
или же remove
операции запрашиваются?
2 ответа
Какой код HTTP я должен вернуть, если увижу
PATCH
запросить свойство / путь, который не поддерживается?
В этой ситуации сервер должен вернуться 405
чтобы указать, что метод HTTP не поддерживается целевым ресурсом. Помимо кода состояния, сервер должен вернуть Allow
заголовок, перечисляющий поддерживаемые методы для этого ресурса:
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 для ресурса, доступного только для чтения.
В сочетании с предложением Кассио относительно предоставления информации, достаточной для описания ошибки.