Postman Chrome应用程序中的form-data,x-www-form-urlencoded和raw之间的区别是什么?

我正在使用Postman Chrome扩展来testingWeb服务。 有三个选项可用于数据input。 我猜原始是发送JSON。 另外两种,form-data和x-www-form-urlencoded有什么区别?

这些是由W3C定义的不同的表单内容types。 如果你想发送简单的文本/ ASCII数据,然后x-www-form-urlencoded将工作。 这是默认的。

但是,如果您必须发送非ASCII文本或大型二进制数据,则表单数据就是为此而devise的。

如果您想使用纯文本或JSON或任何其他types的string,则可以使用Raw。 就像名字所暗示的那样,邮差发送你原始的string数据,而不需要修改。 您要发送的数据types可以通过使用下拉列表中的内容types标题来设置。

请参阅此链接进一步阅读: HTML文档中的表单

这解释得更好: 邮递员文档

请求正文

在构build请求的同时,您将需要处理请求主体编辑器。 邮差让你发送几乎任何types的HTTP请求(如果你不能发送的东西,让我们知道!)。 身体编辑器分为4个区域,根据身体types有不同的控制。

forms数据

multipart / form-data是Web表单用来传输数据的默认编码。 这模拟填写网站上的表格,并提交它。 表单数据编辑器允许您为数据设置键/值对(使用键值编辑器)。 您也可以将文件附加到密钥。 请注意,由于HTML5规范的限制,文件不会存储在历史logging或集合中。 在发送请求时,您将不得不再次select文件。

urlencoded的

此编码与URL参数中使用的编码相同。 你只需要input键/值对,邮差会正确地编码键和值。 请注意,您无法通过此编码模式上传文件。 表单数据和urlencoded之间可能会有一些混淆,所以一定要先检查你的API。

生的

原始请求可以包含任何内容。 除了replace环境variables之外,邮递员不接触在原始编辑器中input的string。 无论你放在文本区域与请求一起发送。 原始编辑器允许您设置格式types以及您应该使用原始主体发送的正确标题。 您也可以手动设置Content-Type标头。 通常,您将在这里发送XML或JSON数据。

二进制

二进制数据可以让你发送邮件中不能input的东西。 例如,图像,audio或video文件。 你也可以发送文本文件。 正如前面在表单数据部分中提到的那样,如果通过历史logging或集合加载请求,则必须重新附加文件。

UPDATE

正如VKK所指出的那样 , WHATWG规范认为urlencoded是表单的默认编码types。

这些属性的无效值缺省值是application / x-www-form-urlencoded状态。 enctype属性的缺省值缺省值也是application / x-www-form-urlencoded状态。

多部分/格式数据

注意。 有关file upload的其他信息,包括向后兼容性问题,“multipart / form-data”和其他内容types之间的关系,性能问题等,请参考[RFC2388]。

有关表单安全问题的信息,请参阅附录。

内容types“application / x-www-form-urlencoded”对于发送大量的包含非ASCII字符的二进制数据或文本是不够的。 内容types“multipart / form-data”应该用于提交包含文件,非ASCII数据和二进制数据的表单。

内容“multipart / form-data”遵循[RFC2045]中概述的所有多部分MIME数据stream的规则。 [multiANA / form-data]的定义可在[IANA]注册处获得。

“multipart / form-data”消息包含一系列部分,每个部分代表一个成功的控制。 这些部分以相应的控制出现在文档stream中的顺序发送到处理代理。 部分边界不应出现在任何数据中; 这是如何完成的,超出了本规范的范围。

与所有多部分MIMEtypes一样,每个部分都有一个可选的“Content-Type”标题,默认为“text / plain”。 用户代理应该提供“Content-Type”头文件,并附带一个“charset”参数。

应用程序/ x-WWW窗体-urlencoded

这是默认的内容types。 使用此内容types提交的表单必须编码如下:

控制名称和值被转义。 空格字符被replace为+', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by %HH',百分号和两个hex数字代表字符的ASCII代码。 换行符表示为“CR LF”对(即%0D%0A'). The control names/values are listed in the order they appear in the document. The name is separated from the value by %0D%0A'). The control names/values are listed in the order they appear in the document. The name is separated from the value by %0D%0A'). The control names/values are listed in the order they appear in the document. The name is separated from the value by =,名称/值对由“&”分隔。

application/x-www-form-urlencoded发送到服务器的HTTP消息的主体本质上是一个巨大的查询string – 名称/值对由&符号分隔,并且名称由等号分隔(=)。 一个例子是:

 MyVariableOne=ValueOne&MyVariableTwo=ValueTwo 

内容types“application / x-www-form-urlencoded”对于发送大量的包含非ASCII字符的二进制数据或文本是不够的。 内容types“multipart / form-data”应该用于提交包含文件,非ASCII数据和二进制数据的表单。