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数据和二进制数据的表单。