在使用 requests
进行 HTTP 请求时,data
和 params
是两种常见的参数,用于传递不同类型的数据。以下是它们的作用和区别:
1. data
的作用
- 用于 POST 请求的主体。
- 通常传递表单数据或 JSON 数据。
- 在 HTTP 请求中,
data
中的内容会被放入请求的 body 中。
适用场景
- 提交表单数据(如登录、下单等)。
- 发送数据给服务器以完成某些操作。
如:
data = {
'username': 'test_user',
'password': '12345'
}
response = requests.post('https://example.com/login', data=data)
上述 data
内容会被编码为 application/x-www-form-urlencoded
(默认),并包含在 HTTP 请求体中。
2. params
的作用
- 用于 GET 请求的 URL 参数。
- 主要用来拼接查询字符串(Query String)。
- 在 HTTP 请求中,
params
的内容会附加到 URL 的 路径后面。
适用场景
- 向服务器传递过滤条件、分页信息或搜索关键字。
- 不影响请求主体。
如:
params = {
'search': 'python',
'page': 1
}
response = requests.get('https://example.com/search', params=params)
上述请求会生成以下 URL:
https://example.com/search?search=python&page=1
主要区别
特性 | data |
params |
---|---|---|
位置 | 请求的 body 中 | 请求的 URL 中 |
常用于 | POST 请求 | GET 请求 |
数据格式 | 表单数据、JSON 数据等 | URL 查询参数 |
传递的内容是否显示 | 通常不直接显示(body 数据) | 直接显示在 URL 上 |
小总结
在你的代码中:
data
用于提交下单所需的信息(账号密码等)到服务器的 POST 请求中。params
如果存在,则通常用于将数据附加到 URL 查询字符串后面(如分页或查询条件),适用于 GET 请求。
POST 请求中的数据字段如何确定?
1、使用抓包工具分析实际请求
浏览器开发者工具 (在浏览器的 Network 面板查看 POST 请求)。
步骤:
- 执行目标操作。
- 在抓包工具中找到相关请求。
- 查看请求的
body
(POST 数据),确定哪些字段被发送到服务器。
在请求头中设置 content-type=application/json
, 就表明请求体中的内容格式为 json 格式。