当前位置: 首页 > news >正文

接口测试(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’}
'''

文件上传接口参数:
1open()读取图片 得到图片的对象
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类型,但是可以不
加 可以自动识别识别文件媒体类型。

http://www.dtcms.com/a/108254.html

相关文章:

  • PyTorch 深度学习实战(32):多模态学习与CLIP模型
  • 中级:Spring框架面试题全解析
  • Labview信号采集与多功能分析系统(可仿真)
  • Python基于Django的新生入学管理系统(附源码,文档说明)
  • 06-01-自考数据结构(20331)- 查找技术-静态查找
  • 【Linux系统篇】:Linux文件管理的“地图与指南针”--从文件描述符表到内核缓冲区
  • IDEA的基础快捷键
  • centos7强制升级docker
  • jupyter notebook笔记:下拉菜单中添加新的conda 环境
  • 人工智能在生物医药-新版ChatGPT-4o辅助一键生成机制图
  • 实战 | 餐厅点餐小程序技术解析:SpringBoot + UniApp 高效开发指南
  • c++柔性数组、友元、类模版
  • ubuntu18 server版花屏问题
  • 脊椎CT图像分割技术详解
  • python中的 f 是什么意思,f‘{username}_log_archive_{int(time.time())}.txt‘
  • 【diffusers 进阶(十四)】权重读取,查看 Lora 具体加在哪里和 Rank ‘秩’ 是多少?以 OminiControl 为例
  • Vue3+Vite+TypeScript+Element Plus开发-03.主页设计与router配置
  • 智能设备运行监控系统
  • intellij Idea 和 dataGrip下载和安装教程
  • 【Nature正刊2023】使用大型语言模型进行自主化学研究
  • 解决小程序video控件在真机和上线后黑屏不播放问题
  • 【ESP32-IDF 笔记】04-I2C配置
  • Scala基础知识5
  • react中hooks使用
  • 关于mysql 数据库中的 慢SQL 的详细分析,包括定义、原因、解决方法及表格总结
  • 【数字化转型,企业应用上云】---持续集成能力重塑企业软件交付新范式
  • 【node-forge】加解密(RSA),代替node-rsa
  • 洛谷题单3-P5721 【深基4.例6】数字直角三角形-python-流程图重构
  • 在Docker中快速部署Redis:从零开始到生产环境配置指南
  • stack栈的基本使用-c++