Python Requests库Session对象的跨请求保持与参数覆盖机制详解

Evan
Evan
发布时间:2026-10-13| 2人浏览过
原创

本文详解Python中requests库Session对象的两个核心妙用:一是跨请求自动保持Cookie等会话状态,简化接口测试流程;二是通过设置Session属性提供请求默认值(如Auth和Headers)。重点解析方法层参数如何覆盖Session层参数,以及如何通过显式设置None来省略默认属性,帮助开发者更高效地管理HTTP会话。

在进行接口测试时,通常需要调用多个接口并发起多次请求。在这些连续请求中,往往需要维持某些共享数据的一致性,例如登录后的Cookie信息。

妙用1

Requests库提供的Session对象能够帮助我们在跨请求时保持特定的参数,并在同一Session实例发出的所有请求间自动维护Cookie状态。 以跨请求保持Cookie为例,可以在命令行中执行以下代码:

# 创建一个session对象 
s = requests.Session() 
# 用session对象发出get请求,设置cookies 
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') 
# 用session对象发出另外一个get请求,获取cookies 
r = s.get("http://httpbin.org/cookies") 
# 显示结果 
r.text 
 '{"cookies": {"sessioncookie": "123456789"}}' 

妙用2

此外,Session对象还能用于设定请求方法的默认数据,这通过配置Session对象的属性来实现。

例如,我们可以设置请求的认证信息(auth)和请求头(headers)作为默认参数:

# 创建一个session对象 
s = requests.Session() 
# 设置session对象的auth属性,用来作为请求的默认参数 
s.auth = ('user', 'pass') 
# 设置session的headers属性,通过update方法,将其余请求方法中的headers属性合并起来作为最终的请求方法的headers 
s.headers.update({'x-test': 'true'}) 
# 发送请求,这里没有设置auth会默认使用session对象的auth属性,这里的headers属性会与session对象的headers属性合并 
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'}) 
# 查看发送请求的请求头 
r.request.headers 

此时生成的请求头部信息如下:

{'Authorization': 'Basic dXNlcjpwYXNz', 'x-test': 'false'}

注意1:在具体的请求方法中传入的参数会覆盖Session中设置的参数。示例如下:

在上述请求中显式添加auth参数:

r = s.get('http://httpbin.org/headers', auth=('user','hah'), headers={'x-test2': 'true'}) 

查看该请求发出的头部信息

{'Authorization': 'Basic dXNlcjpoYWg=', 'x-test': 'false'}

可以观察到,请求方法中指定的Authorization值发生了改变,这表明方法层的参数优先级高于Session层的属性,实现了覆盖效果。

注意2:如果在request请求中希望省略Session对象中已设置的某个属性,只需在方法层参数中将该键的值显式设置为None,该键就会被自动忽略。

再举一个例子:

TBD

总结

以上即为Python中requests库Session对象的详细用法解析,希望能为读者提供帮助。感兴趣的朋友可继续参考本站其他文章,如《Python面向对象编程基础解析(一)》、《13个最常用的Python深度学习库介绍》等。如有任何疑问,欢迎随时留言,小编会及时回复。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。