关于做香奈儿网站的PPT,二元期权网站建设,wordpress目录分页,企业官方网站怎么做requests库是用来发送请求的库#xff0c;本篇用来讲解requests库的基本使用。
1.安装requests库
pip install requests
2.requests库底层方法的调用逻辑
#xff08;1#xff09;get / post / put / delete 四种方法底层调用 request方法 注意#xff1a;data和json都…requests库是用来发送请求的库本篇用来讲解requests库的基本使用。
1.安装requests库
pip install requests
2.requests库底层方法的调用逻辑
1get / post / put / delete 四种方法底层调用 request方法 注意data和json都可以作为Post请求的参数但是使用时机不同。当传参是json类型时使用json当传参是文件时使用files其他时候使用data。
2request方法底层调用session.request方法
3因为get / post / put / delete 四种方法不能对有cookie关联的接口进行自动关联而session.request方法可以进行自动管理所以常用session.request方法发送请求。 3.session.request方法的参数常用的有 参数说明method请求方法url请求路径paramsNoneget请求传参dataNonepost或put请求传参jsonNonepost请求传参headersNone请求头cookiesNoneCookiefilesNone文件上传
4.接收响应
session.request方法发送请求后会返回响应接收响应时需要根据响应的类型来接收
接收方式说明res.text返回文本信息res.json()返回json格式res.content返回的字节内容res.status_code返回的状态码res.reason返回的状态信息res.cookies返回的coolieres.encoding返回的编码格式res.headers返回的响应头
5.接口关联
当后一个接口的参数需要从前一个接口的响应数据中获取时就需要进行接口关联。
实现接口关联有三种方式
通过类变量保存中间变量通过单独文件保存中间变量极限封装成工具一样只需要通过表达式
首先说明如何通过类变量保存中间变量 只需要从前一个接口中提取到变量设置为类变量就可以通过类名在第二个接口中调用了。
class Testapi:access_token 而从响应中提取变量有两种方式
正则表达式提取适用于提取文本结果JsonPath提取 适用于提取json结果
正则表达式提取变量的方法有两种
re.search() 提取单个值通过下标取值re.findall() 提取多个值通过下标取值
re.search(表达式,对象)
result res.text
Testapi.access_token re.search(xxx(.*?)xxx,result).group(1)JsonPath提取变量只有一个方法 jsonpath.jsonpath(对象,表达式)
result res.json()
value jsonpath.jsonpath(result,”$.access_token”)jsonPath表达式规则
规则解释$根节点.子节点…递归取子节点[]代表取列表中的值下标从0开始
6.统一的请求封装
请求四要素请求方法、请求路径、请求参数、请求头 响应四要素响应码、响应信息、响应内容、响应头
所有请求的发送都是组织请求四要素然后发送这种相同类型的操作可以进行统一的封装减少冗余代码同时可以对请求进行统一管理如统一异常处理统一日志监控。
在统一封装请求时可以直接将参数传递给session.request()方法的可变长度参数就不需要考虑参数的类型了。
# 封装
class RequestUtils:sess requests.session();# 统一发送请求def all_send_request(self,**kwargs):res RequestUtils.sess.request(**kwargs)print(kwargs[method])#获取请求方式return resclass Testapi:# 调用def test_file_upload(self):urldatas{meida:open(E:\\111.png,rb)} # 文件的字节流res RequestUtils().all_send_request(methodpost,urlurl,filesdatas)
封装之后会发现第一种通过类变量保存中间变量在跨文件使用时会导致用例出错。
为了解决这个问题我们可以使用第二种方法通过单独的文件保存中间变量来实现接口关联。