接口测试(2)
# 发送接口请求--get请求 搜索商品接口
method = "get"
url = "http://shop.xxn.com:8107/search/searchProdPage"
header= {"Accept-Language":"zh"} # 请求头: requests库需要用字典的格式传输
param = {"prodName":"真皮圆筒包"} # 请求参数: requests库需要用字典的格式传输
# 发送接口请求 把接口四大要素填进去,用req变量接受方法的返回值
req = requests.request(method,url,headers=header,params=param)
print(req) # <Response [200]>,响应想消息的对象
print(req.text) #获取响应消息的响应体 -文本,-字符串(json格式)
print(req.status_code) #获取响应消息的响应状态码
print(req.headers) #获取响应消息的响应头如果是json格式
print(req.json()) #获取响应消息的响应体 req.json()转化为Python的字典格式 --重点
requests 传递参数可以用三个形参接受: --如果用错了 接口的参数传递不过去 接口请求会有问题
总结:requests库发送接口请求的参数接受方式:
- get请求方法,参数接受用params关键字;
- post请求,参数接受用data或者json关键字;
- data:当参数格式是表单格式({“Content-Type”:“application/x-www-form-urlencoded; charset=UTF-8”})
- json:当参数格式是json格式的 文件上传接口(“Content-Type”:“application/json; charset=UTF-8”)
- files: ,文件上传(“Content-Type”:“multipart/form-data”)
- 接口的参数传递格式: 通过这三种关键字可以识别,所以请求头里可以不传content-type头部
上传接口:“Content-Type”:“multipart/form-data” – 一定不能传,requests库不支持-- bug。
报错如下:
{‘timestamp’: ‘2025-03-13 22:04:25’,
‘status’: 500, ‘error’: ‘Internal Server Error’, ‘message’: ‘’, ‘path’: ‘/p/file/upload’}
'''
文件上传接口参数:
1、open()读取图片 得到图片的对象
2、定义文件名字 --存到数据库名字
3、写上问价媒体类型-MIME类型
这三个部分可以用元组包裹: (filename,open(),mime)
'''
# param = {"file":open("lon.png",mode="rb")} #文件参数 --最简易写法
param = {"file":("python73_pic.png",open("lon.png",mode="rb"),"image/png")} #文件参数 --最简易写法
req = requests.request(method,url,headers=header,files=param)
【multipart/form-data】— 上传文件接口,这个接口需要鉴权
当我们需要传输大容量的数据到服务端时(比如上传文件),我们通常使用
multipart/form-data传参类型
在requests中通过指定files参数用来处理文件上传的;files参数的值,也必须是
字典,字典的内容如下:
{name: (filename,文件对象(open打开),媒体类型(Content-Type))}
name是你传的是啥 ,开发定义的名字参数的名字
filename: 可以自己定义上传的文件的名字 不用跟真实的名字一样; 抓
包就是直接用的文件名字;然后会显示在数据库里filename字段里。 不
加 就默认用文件本身的名字。
媒体类型:content-type也可以不加, 其实就是MIME类型,但是可以不
加 可以自动识别识别文件媒体类型。