news 2026/4/19 13:24:22

Python——requests

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python——requests

Requests

  • 一、Requests 库 基础介绍
    • 1. 是什么
    • 2. 安装
    • 3. 导入
  • 二、Requests 全部请求方式
    • 1. 常用6大请求(重点)
    • 2. 不常用
    • 常见响应状态码
  • 三、请求方法
    • 1. GET 请求(查)
    • 2. POST 请求(增/提交)
    • 3. PUT 请求(全量修改)
    • 4. PATCH 请求(局部修改)
    • 5. DELETE 请求(删除)
    • 6. HEAD 请求(健康检查)
    • 7. OPTIONS 了解
  • 四、Requests 常用核心参数
  • 五、响应对象常用属性
  • 六、高级用法(自动化框架必备)
    • 1. Session 会话保持(token/cookie 自动携带)
    • 2. 异常捕获(脚本稳定必备)
    • 3. 忽略 HTTPS 证书报错
  • 七、GET / POST / PUT / PATCH 核心区别
      • 幂等性概念
  • 八、常见面试题
    • 1. 什么是 Requests?
    • 2. requests 常用请求方式有哪些?
    • 3. GET 和 POST 区别?
    • 4. json 和 data 参数区别?
    • 5. 什么是幂等性?哪些请求具备幂等?
    • 6. PUT 和 PATCH 区别?
    • 7. requests 如何携带 token?
    • 8. 接口超时如何处理?
    • 9. res.text 和 res.json() 区别?
    • 10. 接口返回二进制数据用什么获取?
    • 11. Session 作用是什么?
    • 12. 如何处理 HTTPS 证书报错?
    • 13. requests 如何上传文件?
    • 14. 什么场景用 HEAD 请求?
    • 15. DELETE 接口一般测什么?
    • 16. 接口自动化中如何做断言?
    • 17. params 参数作用?
    • 18. 接口请求报错连接失败有哪些原因?
    • 遇到 401 / 403 / 404 / 500 分别代表什么?

一、Requests 库 基础介绍

1. 是什么

  • Requests 是 Python 第三方HTTP/HTTPS 请求库
  • 语法简洁、上手简单,是接口自动化测试首选库
  • 模拟浏览器/设备向服务端发送接口请求,校验返回结果

2. 安装

pipinstallrequests

3. 导入

importrequests

二、Requests 全部请求方式

HTTP 共9种请求,工作常用6种

1. 常用6大请求(重点)

  1. get()查询数据、获取资源(查设备、查日志、查台账)
  2. post()新增数据、登录、下发指令、提交表单
  3. put()全量更新、覆盖修改所有字段
  4. patch()局部更新、只改个别字段
  5. delete()删除资源、删除设备/台账
  6. head()只获取响应头,检测服务是否存活

2. 不常用

  • options():查看服务器允许的请求方法、跨域配置
  • trace():链路追踪,调试使用
  • connect():建立隧道连接,代理/网络底层使用

常见响应状态码

  • 200:成功
  • 400:参数错误
  • 401:未授权/token过期
  • 404:地址不存在
  • 405:请求方式错误,如:用get请求post接口
  • 500:服务器错误

更多响应码内容可以看这篇文章:requests——响应码


三、请求方法

1. GET 请求(查)

importrequests url="http://xxx/api/user/list"headers={"Authorization":"tokenxxxx"}params={"page":1,"size":10}# URL拼接参数res=requests.get(url=url,headers=headers,params=params,timeout=5# 超时时间)print(res.json())

2. POST 请求(增/提交)

data={"username":"test","pwd":"123456"}res=requests.post(url=url,json=data,# json格式入参 最常用headers=headers,timeout=5)

3. PUT 请求(全量修改)

data={"name":"燃气表","status":1,"version":"v1.0"}res=requests.put(url=url,json=data)

4. PATCH 请求(局部修改)

data={"status":0}# 只修改状态res=requests.patch(url=url,json=data)

5. DELETE 请求(删除)

res=requests.delete(url=url,timeout=5)

6. HEAD 请求(健康检查)

res=requests.head(url=url)print(res.headers)

7. OPTIONS 了解

res=requests.options(url)

四、Requests 常用核心参数

  1. url:接口地址
  2. headers:请求头(token、Content-Type)
  3. params:get 拼接在url后面的参数
  4. json:传递 json 格式参数(接口90%用)
  5. data:表单格式参数 form-data
  6. files:上传文件、固件、日志
  7. timeout:超时时间,防止脚本卡死
  8. cookies:携带cookie
  9. auth:账号密码认证

五、响应对象常用属性

res.status_code# 状态码 200/401/404/500res.text# 普通文本返回res.json()# 解析json(接口最常用)res.content# 二进制数据(图片/文件/固件)res.headers# 响应头信息res.cookies# 响应cookieres.encoding# 编码格式

六、高级用法(自动化框架必备)

1. Session 会话保持(token/cookie 自动携带)

session=requests.Session()# 登录session.post(login_url,json=data)# 后续请求自动带上登录态res=session.get(info_url)

2. 异常捕获(脚本稳定必备)

try:res=requests.get(url,timeout=5)res.raise_for_status()# 状态码非200主动抛异常exceptrequests.exceptions.Timeout:print("请求超时")exceptrequests.exceptions.ConnectionError:print("连接失败")exceptExceptionase:print("异常:",e)

3. 忽略 HTTPS 证书报错

res=requests.get(url,verify=False)

七、GET / POST / PUT / PATCH 核心区别

  1. GET:只读查询、安全、幂等、参数暴露在url
  2. POST:提交新增、不幂等、可传大量数据
  3. PUT:全量更新,必须传完整字段,幂等
  4. PATCH:局部更新,只传要修改的字段,轻量高效

幂等性概念

  • 幂等:多次请求,结果完全一致
  • 幂等:GET / PUT / DELETE / PATCH / HEAD
  • 非幂等:POST(重复提交会重复下单/新增)

八、常见面试题

1. 什么是 Requests?

Requests 是 Python 第三方 HTTP 请求库,语法简洁、功能强大,主要用于模拟发送 HTTP/HTTPS 接口请求,是接口自动化测试最常用的库。

2. requests 常用请求方式有哪些?

常用6种:get、post、put、patch、delete、head;
了解:options、trace、connect。

3. GET 和 POST 区别?

  1. GET用于查询,POST用于提交/新增;
  2. GET参数拼接在URL,安全性低;POST参数在请求体;
  3. GET有长度限制,POST无限制;
  4. GET是幂等,POST非幂等。

4. json 和 data 参数区别?

  • json:传递JSON格式数据,请求头自动携带 Content-Type:application/json
  • data:传递表单格式数据,对应 form-data/x-www-form-urlencoded

5. 什么是幂等性?哪些请求具备幂等?

多次发起相同请求,业务结果一致就是幂等。
GET、PUT、DELETE、PATCH、HEAD 幂等;
POST 不幂等。

6. PUT 和 PATCH 区别?

  • PUT:全量更新,需要传入完整字段,覆盖原有数据;
  • PATCH:局部更新,只传需要修改的字段,节约带宽。

7. requests 如何携带 token?

# 通过 headers 请求头携带,例如:headers={"Authorization":"Bearer xxxxxxxx"}res=requests.get(url,headers=headers)

8. 接口超时如何处理?

使用 timeout 参数设置超时时间,结合 try except 捕获超时异常,避免脚本卡死。

9. res.text 和 res.json() 区别?

  • res.text:返回原始字符串文本;
  • res.json():自动将json字符串转为字典,方便取值断言。

10. 接口返回二进制数据用什么获取?

使用 res.content,常用于下载图片、固件、文件、视频。

11. Session 作用是什么?

Session 可以保持会话,自动管理 cookie 和登录态,多次请求共享登录信息,不用重复传token/cookie。

12. 如何处理 HTTPS 证书报错?

添加参数 verify=False 忽略证书校验。

13. requests 如何上传文件?

使用 files 参数,打开文件以二进制形式传入。

files={"file":open("firmware.bin","rb")}res=requests.post(url,files=files)

14. 什么场景用 HEAD 请求?

只获取响应头、不获取响应体,用于服务健康检查、接口连通性测试,速度快。

15. DELETE 接口一般测什么?

删除设备、删除台账、删除用户、解绑资源,还要测试重复删除、删除不存在数据的异常场景。

16. 接口自动化中如何做断言?

通过 res.json() 获取返回字典,断言状态码、code码、message、核心字段数据一致性。

17. params 参数作用?

专门用于 get 请求,自动拼接参数到 URL 后面。

18. 接口请求报错连接失败有哪些原因?

网络不通、IP/端口错误、服务未启动、防火墙拦截、路由不通、域名错误。

遇到 401 / 403 / 404 / 500 分别代表什么?

答:

  • 401 代表未授权、token过期、token错误、未携带登录凭证,需要重新获取token。
  • 403:权限不足,禁止访问;
  • 404:接口地址不存在;
  • 500:服务器内部代码异常。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 13:24:13

2、宽带Doherty放大器ADS协同设计与版图验证实战

1. 宽带Doherty放大器设计基础 Doherty放大器作为射频功率放大器的重要架构,在现代通信系统中扮演着关键角色。我第一次接触这个设计是在为一个5G基站项目做预研时,当时团队需要解决高频段下的效率瓶颈问题。传统Doherty结构由载波放大器(AB类…

作者头像 李华
网站建设 2026/4/19 13:22:49

5分钟上手Electron-Vue:新手也能快速构建跨平台桌面应用

5分钟上手Electron-Vue:新手也能快速构建跨平台桌面应用 【免费下载链接】electron-vue SimulatedGREG/electron-vue:这是一个基于Electron和Vue.js的桌面应用开发框架,适合开发跨平台的桌面应用程序。特点包括一套代码、多端运行、易于上手等…

作者头像 李华
网站建设 2026/4/19 13:20:43

智能打码系统实战:AI人脸隐私卫士在多人合照中的隐私保护应用

智能打码系统实战:AI人脸隐私卫士在多人合照中的隐私保护应用 1. 引言:当合照遇上隐私,我们如何优雅地“隐身”? 想象一下这个场景:公司年会大合影、朋友婚礼现场抓拍、或是社区活动的集体照。这些充满欢乐的照片&am…

作者头像 李华
网站建设 2026/4/19 13:16:41

Qwen3-0.6B-FP8实战教程:使用Postman测试OpenAI兼容接口全流程

Qwen3-0.6B-FP8实战教程:使用Postman测试OpenAI兼容接口全流程 你是不是刚部署了Qwen3-0.6B-FP8模型,看着那个WebUI界面,心里想着:“这模型确实轻量,但我要怎么把它集成到我的应用里呢?” 别担心&#xf…

作者头像 李华