当前位置: 首页 > news >正文

requests.post(url,json,headers,timeout)函数参数json、data、parameter的区别

这是一个非常常见的 requests 库使用问题。下面详细解释一下这三个参数的区别和使用场景:

1.json参数

使用场景:当你要发送 JSON 格式的数据到服务器时

特点

  • 自动将 Python 对象(dict、list 等)序列化为 JSON 字符串

  • 自动设置Content-Typeapplication/json

  • 适用于 RESTful API

import requests payload = { "name": "John", "age": 30, "hobbies": ["reading", "swimming"] } # 推荐方式 - 使用 json 参数 response = requests.post( url="https://api.example.com/users", json=payload, # 自动序列化为 JSON headers=headers, timeout=30 ) # 等价于手动处理: # headers['Content-Type'] = 'application/json' # data = json.dumps(payload) # requests.post(url, data=data, headers=headers)

2.data参数

使用场景

  • 发送表单数据(application/x-www-form-urlencoded)

  • 发送 multipart 表单数据(文件上传)

  • 发送原始字符串数据

# 场景1:表单数据 form_data = { "username": "john", "password": "secret" } response = requests.post( url="https://example.com/login", data=form_data, # 自动编码为表单格式 headers=headers ) # 场景2:文件上传 files = {'file': open('image.jpg', 'rb')} response = requests.post( url="https://example.com/upload", files=files, data={'description': 'My image'} # 其他表单字段 ) # 场景3:原始字符串 xml_data = "<user><name>John</name></user>" response = requests.post( url="https://example.com/api", data=xml_data, headers={'Content-Type': 'application/xml'} )

3.params参数

使用场景:用于 URL 查询字符串参数(GET 请求的参数)

特点

  • 参数会附加在 URL 的?后面

  • 只用于 GET 请求或需要在 URL 中传递参数的情况

query_params = { "page": 1, "limit": 10, "search": "python" } response = requests.get( url="https://api.example.com/articles", params=query_params, # 添加到 URL: ?page=1&limit=10&search=python headers=headers )

总结对比

参数用途Content-Type位置
json发送 JSON 数据application/json请求体
data发送表单数据/原始数据多种类型请求体
paramsURL 查询参数-URL 中

实际使用建议

import requests # ✅ 推荐:RESTful API 使用 json api_response = requests.post( "https://api.example.com/users", json={"name": "John", "age": 30}, headers={"Authorization": "Bearer token"} ) # ✅ 推荐:表单提交使用 data form_response = requests.post( "https://example.com/login", data={"username": "john", "password": "secret"} ) # ✅ 推荐:GET 请求参数使用 params search_response = requests.get( "https://api.example.com/search", params={"q": "python", "page": 1} ) # ❌ 避免:不要混淆使用 # 错误:用 data 发送 dict 到期望 JSON 的 API # requests.post(url, data=dict_data) # 可能出错 # 正确:明确指定数据格式 requests.post(url, json=dict_data) # 对于 JSON API requests.post(url, data=dict_data) # 对于表单接口

简单记忆

  • API 交互→ 用json

  • 表单提交→ 用data

  • URL 参数→ 用params

  • 文件上传→ 用files+data

http://www.jsqmd.com/news/1373506/

相关文章:

  • Java对象拷贝
  • 2026深圳香港搬家公司推荐:跨境搬家服务能力全测评
  • 天津GEO优化服务商怎么选:信源、模型与合同避坑指南实测
  • SpringBoot+Vue房屋租赁系统开发实战
  • 2026年高中生学生手机选购推荐哪款值得入手 - 科技焦点
  • 鸿蒙 DevEco Testing:性能测试(三)
  • 职业信心崩塌的深层原因与系统性重建路径
  • CMake构建Qt项目目录结构最佳实践
  • 企业智能问数为什么总是答非所问——推理可视化解决的信任问题
  • AI时代下的OPT单人研发模式研究与实践
  • 011、车载影像系统架构:环视/前视/DMS/OMS多路输入管理与ISP资源调度
  • AI时代一线执行者转型指南:从执行者到AI指挥官的实战策略
  • RAID磁盘阵列分析,超详细
  • WXEntryActivity无返回
  • 2026日式搬家公司推荐:深圳高端搬家服务优劣对比
  • 专属新品首发专区,2027具身智能展官方预定
  • 常用网站记录
  • vue 项目共用node_modules
  • UE5蓝图重构利器:自动化重命名插件开发全解析
  • 2026最新:苹果用户怎么选语音转文字?3款实用免费工具亲测推荐
  • AD23与STM32 Nucleo-64板
  • Jenkins基本使用教程
  • 012、安防NVR/DVR多路编码架构:海思Hi3516与瑞芯微RK3588的ISP与编码协同
  • QMK Toolbox终极指南:15分钟掌握机械键盘固件刷写
  • 2026漳州危房鉴定检测怎么选?老旧房危房鉴定靠谱机构 TOP 结构安全检测+ 报告可查 电话汇总
  • 活动爆灯系统和设备贵吗?多种评委爆灯方案,满足您不同预算不同需求
  • 5分钟掌握暗黑破坏神2存档编辑:可视化修改角色与装备的完整方案
  • 2026年石家庄挑选攻略:杨世强及优质从业者梳理 - 小范同学a
  • 如何快速解决Windows系统问题:终极Visual C++运行库修复指南
  • 研究生做论文整理:2026年5款图片转文字app推荐,免费额度满足日常需求