前言
最近在学习python中request模块,正好有一个post接口需要上传图片 且需要登录信息的token,于是写一篇分享心得
一、怎么利用request模块发送请求?
我这边就不例举网上所说的几大请求,以及如何下载
直接直奔主题,后续评论进行补充说明
首先引用模块 import requests
利用requests模块中的 post和get发送即可
此处用post模块发送登录请求,携带参数data,请求中返回了我们需要的参数token
如下几处谨记
print(response.status code) # 返状态码print(response.reason) # 正常返回OK,异常返回对应的Http响应状态描述# 获取响应头print(response.headers)print(response.text) # 返回请求的内容print(response.content) # 返请求的内容print(response.cookies) # cookies内容
二、提取请求中返回的token
1.处理数据为python 字典类型
当返回数据为{”s“:”b“}我们怎么提取出来b,这是一个问题,
首先第一步这是个json数据类型,我们利用python中函数json.loads 将这串数据转化为字典类型,
其次我们就可以用data[“a”]就可以提取出来b,
代码如下(示例):
data = json.loads(r1.text) # 将响应的文本转换为Python对象(如字典)
first_value = data.get(‘access_token’) # 使用get方法可以安全地提取值,如果键不存在则返回None
最后将所提取出来的token携带进下一个接口,那么问题来了,如果json数据类型里面还嵌套一个列表,怎么去做?
2.怎么利用request模块上传图片
本次的请求就两个请求,登录,获取登录的接口的token,去上传图片,
token解决了,就要研究怎么上传图片
第一步肯定是要告诉机器表示图片的位置
此处忽略
第二步就是要打开图片
代码如下(示例):
with open(image_pic,‘rb’) as image_file:
files = {‘idcardOcr’: (‘image_name.jpg’, image_file, ‘image/jpeg’)}
此处中idcardocr 就是我们请求中参数名,image_pic是我们定义的图片名字,image/jpeg就是类型,此处衍生一下,因为本人是名测试人员,在jmeter中对应MIME类型,就很好理解。
第三步告诉机器这个图片的类型
同上
第四步将token 放进请求头里面 ,这里面一定要注意
是放在头里面,之前以为要放在cookie里面研究半天
headers ={
“A”:f’Bearer {first_value}',
}
此处中为什么没有加数据类型,默认都是Content-type from-data
第五步完成
直接发送post请求,将参数放置,运行即可
代码如下(示例):
r2 = requests.post(url=‘url’,data=data1,files=files,headers=headers)
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了request模块,利用请求一返回的token进行请求以及用request模块中发送图片的请求举例,当然如果请求中一个带图片一个不带图片怎么发?小伙伴也可以考虑一下