16

在 HTTP PUT 请求中发送表单数据是否有效?如果您能指出我的规格,那就太好了。

我已经阅读了 HTTP 1.1 规范。但我没有发现 PUT 请求是否可以有表单数据。

我正在使用 Java 创建和访问 RESTful Web 服务。POST 支持application/x-www-form-urlencoded作为 Content-Type。

从规范中,我了解到 POST 用于创建新资源(请求 URI 标识的资源的子资源),而 PUT 用于创建或更新资源。

但我的疑问是 PUT 方法是否也可以包含表单数据?我试图根据规范找出是否可以。而且我在 HTTP 1.1 规范中找不到任何关于此的内容。

4

3 回答 3

7

是的,您可以将 application/x-www-form-urlencoded 与 PUT 一起使用。HTTP 规范不限制哪些方法可以与哪些媒体类型一起使用。

目前正在进行的 Httpbis 规范对 PUT 进行了显着扩展的讨论https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-p2-semantics-14#page-18

于 2011-06-10T12:46:33.397 回答
4

由于PUT 方法用于在提供的 URI 下存储封闭的实体,并且Content-Type头字段实体头字段,因此在 PUT 请求中使用Content-Type头字段是合法的。

现在剩下的问题是接收服务器是否可以适当地处理此类请求和Content-Type信息。在最坏的情况下,它无法处理Content-Type标头字段并返回 501 响应:

实体的接收者不能忽略任何它不理解或不实现的Content-* (例如Content-Range )标头,并且在这种情况下必须返回 501(未实现)响应。

于 2011-06-10T12:47:25.877 回答
0

这是 wc3 的 HTTP 规范

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

此外,这里是 Content-Type 的页面

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

和放

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

如果您需要有关 HTTP PUT 的特定语言的帮助,请使用具体信息更新您的问题

于 2011-06-10T12:19:53.003 回答