当前位置: 首页 > 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.cnnetsun.cn/news/3970464.html

相关文章:

  • 5分钟免费解锁Office高级功能:Ohook开源工具的完整指南
  • FDE一天到底在干什么——前沿部署工程师的真实工作内容拆解
  • 5个实用技巧彻底解锁Wand专业版功能:告别时间限制的终极指南
  • 2026最新:苹果用户怎么选语音转文字?3款实用免费工具亲测推荐
  • 研究生做论文整理:2026年5款图片转文字app推荐,免费额度满足日常需求
  • Prompt-Region Grounding:为什么把题目画进图片,多模态大模型就集体“不会做题“了
  • 专属新品首发专区,2027具身智能展官方预定
  • 西湖论剑:网络安全领域的“华山论剑”
  • 5分钟掌握暗黑破坏神2存档编辑:可视化修改角色与装备的完整方案
  • 3个步骤解锁星露谷物语的无限可能:SMAPI模组加载器深度解析
  • 2026年语音转文字神器实测对比:哪款好用,差距竟然这么大
  • 登报召开股东大会公告怎么登?股东大会登报公告办理渠道与注意事项
  • 无锡燃气灶维修全域覆盖 欧米到家同城上门深度检修承诺不返工|打不着火|松手熄火|黄火冒黑烟|漏气|各类故障一站式解决
  • 终极PS Vita内容管理指南:如何用开源工具QCMA实现无线备份自由
  • 基于51单片机与DS18B20的智能温控风扇系统设计与实践
  • 【单片机课设毕设项目】基于 STM32 单片机的阈值可调型温室环境智能调控装置 基于 51 单片机的声光报警式农田小型环境智能管控系统(017702)
  • SSH远程Vim文本复制到本地剪贴板的终极方案:OSC 52原理与配置详解
  • 实证论文缺核心变量?
  • 动态肩部平衡:提升网球高尔夫击球效率与预防损伤的生物力学解析
  • Inno Setup中文汉化完全指南:三步为Windows安装程序添加专业简体中文界面
  • 采购为什么总是“黑箱”?SRM如何提升采购透明度—2个真实案例复盘
  • 纯静态个人导航网站搭建指南:HTML+CSS+JavaScript实战
  • SpringBoot中Logback日志配置优化实战
  • Windows / Mac电脑怎么投屏到电视?手把手教程,小白也能搞定
  • Git Rebase交互模式详解:合并提交提升代码历史可读性
  • ThinkPad风扇控制终极指南:用TPFanCtrl2解锁您的笔记本散热潜能
  • Python执行系统命令并保存输出的完整指南
  • 计算机毕业设计之基于Spring Boot+Vue的实验室仪器设备管理系统的设计与实现
  • 拒绝一知半解:从“脱水蔬菜”到现代前端水合(Hydration)的三场技术革命
  • 全文 - NVIDIA CuLitho and the Future of Inverse Lithography 与 cuLitho 简介