Postman Chrome:form-data、x-www-form-urlencoded和raw有什么区别

xxhby3vn  于 2023-11-18  发布在  Postman
关注(0)|答案(6)|浏览(167)

我正在使用Postman Chrome扩展来测试一个Web服务。
有三个选项可用于数据输入。
raw是用来发送JSON的。
form-datax-www-form-urlencoded有什么区别?

tct7dpnv

tct7dpnv1#

这些是W3C定义的不同表单内容类型。如果你想发送简单的文本/ ASCII数据,那么x-www-form-urlencoded将起作用。这是默认值。
但是如果你必须发送非ASCII文本或大的二进制数据,那么form-data就可以了。
如果你想发送纯文本或JSON或任何其他类型的字符串,你可以使用Raw。顾名思义,Postman发送你的原始字符串数据,而不需要修改。你可以通过使用下拉列表中的content-type header来设置发送的数据类型。

Binary可用于在请求中附加非文本数据,例如视频/音频文件、图像或任何其他二进制数据文件。

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

x0fgdtte

x0fgdtte2#

这个解释更好:Postman docs
请求主体
在构造请求时,你会经常处理请求体编辑器。Postman允许你发送几乎任何类型的HTTP请求(如果你不能发送某些东西,让我们知道!)。主体编辑器分为4个区域,根据主体类型有不同的控件。
form-data
multipart/form-data是web表单用于传输数据的默认编码。这模拟在网站上填写表单并提交表单。表单数据编辑器允许您设置键/值对(使用键值编辑器)为您的数据。您也可以将文件附加到键。请注意,由于HTML5规范的限制,文件不存储在历史记录或集合中。您必须在发送请求时再次选择该文件。
urlencoded
此编码与URL参数中使用的编码相同。您只需要输入键/值对,Postman将正确编码键和值。请注意,您不能通过此编码模式上传文件。form-data和urlencoded之间可能会有一些混淆,因此请确保首先检查您的API。

原始请求可以包含任何内容。除了替换环境变量之外,Postman不会接触原始编辑器中输入的字符串。您在文本区域中输入的任何内容都会随请求一起发送。原始编辑器允许您设置格式类型沿着以及应随原始主体发送的正确头部。您也可以手动设置Content-Type头部。通常,您将在此处发送XML或JSON数据。
二进制
二进制数据允许您发送您无法在Postman中输入的内容。例如,图像,音频或视频文件。您也可以发送文本文件。正如前面在表单数据部分所提到的,如果您通过历史记录或集合加载请求,则必须重新附加文件。

更新

正如VKK所指出的,WHATWG规范说urlencoded是表单的默认编码类型。
这些属性的无效默认值是application/x-www-form-urlencoded状态。enctype属性的缺少默认值也是application/x-www-form-urlencoded状态。

epfja78i

epfja78i3#

下面是一些补充示例,可以查看Postman在请求中传递的原始文本。您可以通过打开Postman控制台来查看:
x1c 0d1x的数据

form-data

报头

content-type: multipart/form-data; boundary=--------------------------590299136414163472038474

字符串
身体

key1=value1key2=value2

x-www-form-url编码

报头

Content-Type: application/x-www-form-urlencoded


身体

key1=value1&key2=value2

Raw text/plain

报头

Content-Type: text/plain


身体

This is some text.

Raw json

报头

Content-Type: application/json


身体

{"key1":"value1","key2":"value2"}

olhwl3o2

olhwl3o24#

multipart/form-data

注意:有关文件上传的其他信息,包括向后兼容性问题、“multipart/form-data”与其他内容类型之间的关系、性能问题等,请咨询RFC2388
有关表单安全问题的信息,请参阅附录。
内容类型“application/x-www-form-urlencoded”对于发送大量二进制数据或包含非ASCII字符的文本效率低下。内容类型“multipart/form-data”应用于提交包含文件、非ASCII数据和二进制数据的表单。
内容类型“multipart/form-data”遵循RFC2045中概述的所有多部分MIME数据流的规则。“multipart/form-data”的定义可在[IANA]注册中心获得。
“multipart/form-data”消息包含一系列部分,每个部分代表一个成功的控件。这些部分按照相应控件在文档流中出现的相同顺序发送到处理代理。部分边界不应出现在任何数据中;如何做到这一点不在本规范的范围内。
与所有多部分MIME类型一样,每个部分都有一个可选的“Content-Type”头,默认为“text/plain”。用户代理应该提供“Content-Type”头,并附带一个“charset”参数。

application/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-form-urlencoded”**在发送大量二进制数据或包含非ASCII字符的文本时效率低下。内容类型“multipart/form-data”应用于提交包含文件、非ASCII数据和二进制数据的表单。

uelo1irk

uelo1irk5#

让我们把一切都放轻松,这一切都是关于如何发出http请求:

1- x-www-form-urlencoded

HTTP请求:

GET /getParam1 HTTP/1.1
User-Agent: PostmanRuntime/7.28.4
Accept: */*
Postman-Token: a14f1286-52ae-4871-919d-887b0e273052
Host: localhost:12345
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 55

postParam1Key=postParam1Val&postParam2Key=postParam2Val

字符串

2- raw



HTTP请求:

GET /getParam1 HTTP/1.1
Content-Type: text/plain
User-Agent: PostmanRuntime/7.28.4
Accept: */*
Postman-Token: e3f7514b-3f87-4354-bcb1-cee67c306fef
Host: localhost:12345
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 73

{
    postParam1Key: postParam1Val,
    postParam2Key: postParam2Val
}

3- form-data



HTTP请求:

GET /getParam1 HTTP/1.1
User-Agent: PostmanRuntime/7.28.4
Accept: */*
Postman-Token: 8e2ce54b-d697-4179-b599-99e20271df90
Host: localhost:12345
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------------------------140760168634293019785817
Content-Length: 181

----------------------------140760168634293019785817
Content-Disposition: form-data; name="postParam1Key"

postParam1Val
----------------------------140760168634293019785817--

mfpqipee

mfpqipee6#

1.原材料:此选项用于发送原始数据,如JSON,XML等。您可以选择不同的数据格式(如JSON,XML等)并手动输入Postman将发送到目标服务的数据。您可以参考How to Send JSON Data in Postman上的这篇文章,了解有关在Postman中发送JSON数据的更多信息。
1.表格-数据:此选项用于模拟HTML表单提交的数据传输方式,在此选项下,可以像填写HTML表单一样填写字段及其对应的值,通常用于文件上传等操作。

  1. x-www-form-urlencoded:此选项也用于模拟HTML表单提交的数据传输方式。与form-data不同,x-www-form-urlencoded将数据编码为URL参数。您可以添加字段及其对应的值,Postman将自动编码并添加到请求的URL参数中。

相关问题