我正在使用Postman Chrome扩展程序来测试Web服务。
数据输入有三个选项。
我想这raw
是用于发送JSON。
其他两个form-data
和之间有什么区别x-www-form-urlencoded
?
我正在使用Postman Chrome扩展程序来测试Web服务。
数据输入有三个选项。
我想这raw
是用于发送JSON。
其他两个form-data
和之间有什么区别x-www-form-urlencoded
?
Answers:
这些是W3C定义的不同的Form内容类型。如果要发送简单的文本/ ASCII数据,则可以使用x-www-form-urlencoded。这是默认值。
但是,如果您必须发送非ASCII文本或大型二进制数据,则表单数据适用于此。
如果要发送纯文本或JSON或任何其他类型的字符串,则可以使用Raw。顾名思义,Postman会直接发送您的原始字符串数据,而无需进行任何修改。您可以使用下拉菜单中的content-type标头设置要发送的数据类型。
二进制可当你要非文本数据附加到该请求,例如视频/音频文件,图像,或任何其他的二进制数据文件中使用。
请参阅此链接以进一步阅读: HTML文档中的表单
这可以更好地说明: 邮递员文档
要求正文
在构造请求时,您将与请求主体编辑器打交道。Postman允许您发送几乎所有类型的HTTP请求(如果您无法发送某些请求,请告诉我们!)。正文编辑器分为4个区域,根据正文类型具有不同的控件。
表格数据
multipart / form-data是Web表单用于传输数据的默认编码。这模拟在网站上填写表格并提交。表单数据编辑器使您可以为数据设置键/值对(使用键值编辑器)。您也可以将文件附加到密钥。请注意,由于HTML5规范的限制,文件未存储在历史记录或集合中。发送请求时,您将不得不再次选择文件。urlencoded
此编码与URL参数中使用的编码相同。您只需要输入键/值对,Postman就会正确编码键和值。请注意,您无法通过此编码模式上传文件。表单数据和urlencode编码之间可能会有一些混淆,因此请确保首先检查您的API。
生的
原始请求可以包含任何内容。除替换环境变量外,Postman不会触摸在原始编辑器中输入的字符串。无论您在文本区域中输入什么内容,都将随请求一起发送。使用原始编辑器,您可以设置格式类型以及应随原始正文发送的正确标题。您也可以手动设置Content-Type标头。通常,您将在此处发送XML或JSON数据。
二元
二进制数据允许您发送无法在Postman中输入的内容。例如,图像,音频或视频文件。您也可以发送文本文件。如前面在“表单数据”部分所述,如果要通过历史记录或集合加载请求,则必须重新附加文件。
更新
正如VKK指出的那样,WHATWG规范说urlencoded是表单的默认编码类型。
这些属性的默认值默认为application / x-www-form-urlencoded状态。enctype属性的默认缺失值也是application / x-www-form-urlencoded状态。
Content-Type: application/json
?和原始数据输入为json一样{foo: bar}
的Content-Type: application/json
标头?
多部分/表单数据
注意。请参阅RFC2388,以获取有关文件上传的其他信息,包括向后兼容性问题,“多部分/表单数据”与其他内容类型之间的关系,性能问题等。
请查阅附录以获取有关表格安全性问题的信息。
内容类型“ application / x-www-form-urlencoded”对于发送大量二进制数据或包含非ASCII字符的文本效率不高。内容类型“ multipart / form-data”应用于提交包含文件,非ASCII数据和二进制数据的表单。
内容类型“ multipart / form-data”遵循RFC2045中概述的所有多部分MIME数据流的规则。可在[IANA]注册表中找到“ multipart / form-data”的定义。
“多部分/表单数据”消息包含一系列部分,每个部分代表成功的控件。零件以相应控件出现在文档流中的顺序发送到处理代理。零件边界不应出现在任何数据中;如何完成此操作不在本规范的范围之内。
与所有多部分MIME类型一样,每个部分都有一个可选的“ Content-Type”标头,默认为“文本/纯文本”。用户代理应提供“ Content-Type”标头,并附带“ charset”参数。
应用程序/ x-www-form-urlencoded
这是默认的内容类型。使用此内容类型提交的表单必须按以下方式编码:
控件名称和值被转义。空格字符将替换为+', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by
%HH',一个百分号和两个十六进制数字,代表该字符的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
=和“名称/值”对之间用“&”分隔)。
application/x-www-form-urlencoded
发送到服务器的HTTP消息的主体本质上是一个巨大的查询字符串-名称/值对由&符分隔,名称与值由等号(=)分隔。例如:
MyVariableOne=ValueOne&MyVariableTwo=ValueTwo
的内容类型“application / X WWW的窗体-urlencoded”是低效的,用于发送大量的二进制数据或包含非ASCII字符的文本。内容类型“ multipart / form-data”应用于提交包含文件,非ASCII数据和二进制数据的表单。
以下是一些补充示例,以查看Postman在请求中传递的原始文本。您可以通过打开Postman控制台来查看以下内容:
标头
content-type: multipart/form-data; boundary=--------------------------590299136414163472038474
身体
key1=value1key2=value2
标头
Content-Type: application/x-www-form-urlencoded
身体
key1=value1&key2=value2
标头
Content-Type: text/plain
身体
This is some text.
标头
Content-Type: application/json
身体
{"key1":"value1","key2":"value2"}
binary
。