会话对象可以在跨请求保持某些参数,会话对象有requests api的大部分方法,我理解会话对象就是一个资源共享池
使用requests.Session()可以创建会话对象的实例
还是以之前GitHub的接口为例,之前文章在调用接口的时候,每次都需要做一个基本认证。那现在直接把这个基本认证放到会话对象里面,然后通过会话对象去调用接口。
import requests s = requests.Session() s.auth = ('username','password') url1 = 'https://api.github.com/user' url2 = 'https://api.github.com/user/emails' r1 = s.get(url1) print('r1:',r1.status_code) print('r1:',r1.text) r2 = s.get(url2) print('r2:',r2.status_code) print('r2:',r1.text)
url是查询认证过后的用户信息的接口,url2是查询用户邮箱的接口
换成自己GitHub的账户名和密码
可以看到两个不同接口的请求,都没有写关于认证的代码。但是还是都请求成功了。因为会话对象自动把auth参数加进去了。
一般会话对象使用在登录的时候,这样登录之后就会把cookie等信息拿到,这样再请求别的时候就不用带上cookie了。
不过官方文档说方法级别的参数,就算添加到了对象也只会生效一次,比如cookies。没有试验过