Может ли запрос HTTP PUT иметь приложение /x -www-form-urlencoded как Content-Type?

Допустимо ли отправлять данные формы в запросе HTTP PUT? Если бы вы могли указать мне на спецификацию, это было бы здорово.

Я прошел через спецификацию HTTP 1.1. Но я не нашел, могут ли запросы PUT иметь данные формы или нет.

Я использую Java для создания и доступа к веб-сервисам RESTful. POST поддерживает application/x-www-form-urlencoded как Content-Type.

Из спецификации я понимаю, что POST предназначен для создания нового ресурса (подресурса ресурса, идентифицируемого URI запроса), а PUT - для создания или обновления ресурса.

Но я сомневаюсь, что метод PUT также может содержать данные формы? Я пытаюсь выяснить, нормально ли это в соответствии со спецификацией. И я не могу найти ничего об этом в спецификации HTTP 1.1.

Ответ 1

Да, вы можете использовать application/x-www-form-urlencoded с PUT. Спецификация HTTP не ограничивает какие методы могут использоваться с какими типами носителей.

В настоящее время в спецификации Httpbis значительно расширилось обсуждение PUT http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-14#page-18

Ответ 2

Так как метод PUT используется для хранения заключенной entity в соответствии с предоставленным URI и поле заголовка Content-Type является entity заголовка, законно использовать поле заголовка Content-Type в запросе PUT.

Теперь остается вопрос, сможет ли принимающий сервер обрабатывать такой запрос и информацию Content-Type соответствующим образом. В худшем случае он не может обрабатывать поле заголовка Content-Type и возвращает ответ 501:

Получатель объекта НЕ ДОЛЖЕН игнорировать любой контент-    (например, Content-Range), которые он не понимает и не реализует    и ДОЛЖЕН возвращать ответ 501 (не реализованный) в таких случаях.

Ответ 3

Вот спецификация HTTP из wc3

http://www.w3.org/Protocols/rfc2616/rfc2616.html

Кроме того, здесь представлены страницы Content-Type

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17

и PUT

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6

Если у вас есть конкретный язык, с которым вам нужна помощь в отношении вашего HTTP PUT, пожалуйста, обновите свой вопрос со спецификой