HTTP请求中的参数格式多样,主要取决于请求的方式(如GET、POST等)以及Content-Type
的设置。下面介绍各个请求方式中常见的参数格式。
1、GET请求
get请求方式通常不会带有请求体,参数通过URL的查询字符串来传递
参数附加在URL路径之后,以问号(?)开头,多个参数之间使用“&”符号分隔。
示例:https://www.example.com/search?query=http&page=1
特点:参数会暴露在URL中,不适合传输敏感信息,且GET请求的参数大小有限制。
2、POST、PUT等请求
通常带有请求体,请求体中数据的具体格式取决于Content-Type
的值。
-
如果
Content-Type
是application/x-www-form-urlencoded
,则数据会被编码为类似查询字符串的格式(字段名=值
),但包含在请求体中,而不是URL中;同时会对数据进行URL编码URL编码的工作原理是将某些字符替换为
%
后跟两位十六进制数的形式。这些字符通常是那些无法在URL中直接使用的字符,比如空格、特殊字符(如#
、%
、&
等)以及非ASCII字符。例如:
-
空格()被编码为
%20
。 -
井号(
#
)被编码为%23
。 -
与号(
&
)被编码为%26
。 -
问号(
?
)被编码为%3F
。
请求行+请求头
POST /login HTTP/1.1 Host: www.example.com Content-Type: application/x-www-form-urlencoded Content-Length: 29
请求体
username=john&password=123456
-
-
如果
Content-Type
是multipart/form-data
,则数据会被组织成多个部分(parts),每个部分都可以包含不同的字段(包括文件),每个部分之间由边界字符串分隔。这种格式通常用于文件上传。 -
如果
Content-Type
是application/json
,则数据会以JSON
格式进行编码和组织:请求行+请求头
POST /user HTTP/1.1 Host: www.example.com Content-Type: application/json Content-Length: 65
请求体
{ "name": "John Doe", "email": "john.doe@example.com", "age": 30 }
3、Content-Type简介
3.1 Content-Type的基本格式:
Content-Type: [media-type]; [charset]=[charset_value]
-
media-type:这是资源的MIME类型,比如
text/html
、application/json
、image/png
等。 -
charset(可选):指定用于该资源的字符集,比如
UTF-8
、ISO-8859-1
等。它用于文本类型的内容,以确保字符的正确解析和显示。