json HTTP POST的表单内容类型?
只是想澄清一下表单内容类型:json HTTP POST的表单内容类型?,json,http,forms,Json,Http,Forms,只是想澄清一下表单内容类型: application/x-www-form-urlencoded:在这里可以发送用url编码的参数 多部分/表单数据: 我需要在帖子中发送一个JSON(我想它的类型是:text/x-JSON)。 所以问题是,multipart/form data是否适合此用途/x-www-form-urlencoded是否更好 另外,是否可以发送url中编码的一些参数和json中的一些数据 multipart/form-data 要将文件上载到服务器时使用。请查看详细信息。我也
application/x-www-form-urlencoded
:在这里可以发送用url编码的参数多部分/表单数据
:text/x-JSON
)。
所以问题是,multipart/form data
是否适合此用途/x-www-form-urlencoded是否更好
另外,是否可以发送url中编码的一些参数和json中的一些数据
multipart/form-data
要将文件上载到服务器时使用。请查看详细信息。我也在想同样的事情。基本上,html规范对html和表单数据具有不同的内容类型。Json只有一种内容类型 根据规范,json数据的POST应该具有以下内容类型:
应用程序/json 报告的相关部分 6.7内容类型(MIME类型)
内容类型的示例包括“文本/html”、“图像/png”、“图像/gif”、“视频/mpeg”、“文本/css”和 “音频/基本” 17.13.4表单内容类型
…
应用程序/x-www-Form-urlencoded
这是默认的内容类型。随此内容提交的表格 类型必须按如下方式编码 报告的相关部分
JSON文本的MIME媒体类型为application/JSON
看起来人们已经回答了您问题的第一部分(使用application/json) 第二部分:在HTTP POST请求中发送查询参数是完全合法的 例如:
POST /members?id=1234 HTTP/1.1
Host: www.example.com
Content-Type: application/json
{"email":"user@example.com"}
查询参数通常在POST请求中用于引用现有资源。上面的示例将现有成员的电子邮件地址更新为id为1234。我读了那篇文章,但它没有说明多部分/表单数据仅用于文件上载。但实际上是这样吗?是的。非常常见的用法是将文件上载到服务器,即使它只是包含在规范中,也可以将内容打包,以便在多格式文档的多个部分中提交。如果您在文章中找到“multipart”一词,您将看到:
[…]此属性的默认值为“application/x-www-form-urlencoded”。值“multipart/form data”应该与输入元素type=“file”结合使用。
如果发送的只是一个json文档,那么有时只使用application/json就更好了,要让标准客户端和服务器使用除多部分/表单数据
和应用程序/x-www-form-encoded
之外的任何东西需要做一些工作,但这样做仍然完全符合标准。示例POST请求是完全合法的,但比它应该支持的更难(因为编写HTTP服务器的人希望HTTP POST始终是应用程序/x-www-form-encoded
或多部分/表单数据
之一,因为让web浏览器使用任何其他内容都需要一些复杂的javascript)@JeremyList-Web服务器不希望http post是这两种内容类型中的一种。这些内容类型指html表单。数据类型将建议内容类型,如上面的application/json。@Matt这是他们应该做的:实际上,大多数服务器只将除html表单数据以外的任何内容视为空。@JeremyList您有类似的示例吗将html表单数据以外的任何内容都视为空的web服务器?我使用的每台web服务器都能正确处理内容类型。Apache httpd和nginx能正确处理此问题。主要的脚本语言都有内置的web服务器,可以正确处理此问题。@HermanJ.radtkeii PHP默认情况下不能正确处理内容类型,因此需要4行php for json,再加上支持的任何其他内容类型至少需要这么多。Httpd和nginx在发布到cgi和fastcgi脚本(以及一些其他脚本类型,但不是全部)时做了正确的事情,但大多数脚本无法正确处理。这是一个答案还是一个问题?