python中应用requests库模拟postman请求携带token,使用get和post方法请求头携带token

背景:

实际开发中,Python程序中需要调用后台接口,充当前端,后端规定请求头需要携带token

封装的get和post类:

class RequestMethodCarryJson:"""定义请求类型以json方式传递参数"""def __init__(self):"""初始化参数"""self.data = {}self.files = {}def get(self, url, data, headers):"""定义get方法请求:return:"""try:return requests.get(url=url, data=data, headers=headers, timeout=60)except TimeoutError:return print('%s get request timeout!' % url)def getCarryToken(self, url, data, headers):"""定义get方法请求:return:"""try:return requests.get(url=url, json=data, headers=headers, timeout=60)except TimeoutError:return print('%s get request timeout!' % url)def post(self, url, data, headers):"""定义post方法请求post携带token,看起来不需要像get那样添加一个getCarryToken特有的识别方法:return:"""try:return requests.post(url=url, data=json.dumps(data), headers=headers, timeout=60)except TimeoutError:return print('%s post request timeout!' % url)
class RequestMethodCarryFormData:"""定义请求类型以表单方式form-data传递参数"""def __init__(self):"""初始化参数"""self.data = {}self.files = {}def get(self, url, data, headers):"""定义get方法请求:return:"""try:return requests.get(url=url, data=data, headers=headers, timeout=60)except TimeoutError:return print('%s get request timeout!' % url)def getCarryToken(self, url, data, headers):"""定义get方法请求,额外添加token:return:"""try:return requests.get(url=url, json=data, headers=headers, timeout=60)except TimeoutError:return print('%s get request timeout!' % url)def post(self, url, data, headers):"""定义post方法请求这个携带json应该不需要额外改:return:"""try:return requests.post(url=url, data=data, headers=headers, timeout=60)except TimeoutError:return print('%s post request timeout!' % url)

应用场景:

场景1——get请求时Headers携带token[传递参数以json格式]:

​token="里面填token内容"
test1Info = test1(token)def test1(token):"""携带token,访问平台已经存在的数据库,以json格式传递数据:param token::return:"""url = "http://127.0.0.1:8088/backup/url1"headers = {'Content-Type': 'application/json;charset=utf-8', 'token': token}data = dict()data["param1"] = "param1"data["param2"] = "param2"resp = RequestMethodCarryJson().getCarryToken(url, data, headers).json()dbInfo = resp["items"]return dbInfo

场景2——post请求时Headers携带token[传递参数以application/x-www-form-urlencoded(表单)格式]:

token="里面填token内容"
test2Info = test2(token)def test2(token):url = "http://127.0.0.1:8088/testFormData/json/transfer"headers = {'Content-Type': 'application/x-www-form-urlencoded', 'token': token}data = dict()data["param1"] = "param1""""这里不接受状态码"""resp = RequestMethodCarryFormData().post(url, data, headers).json()info = resp["items"]if info == "格式正确":return Trueelse:return False

场景3——踩坑后总结成功的代码:

    """请求头携带token拿取信息:1-post-以json格式传递数据,请求头携带token成功形如:# resp = requests.post(url,json=data,headers=headers).json()resp = RequestMethodCarryJson().post(url, data, headers).json()2-get-以json格式传递数据,请求头携带token成功# resp = requests.get(url,json=data,headers=headers).json()resp = RequestMethodCarryJson().getCarryToken(url, data, headers).json():param platformInfo::return:"""

延伸理解:

相关资料参考:

postman中 form-data、x-www-form-urlencoded的区别_叫我峰兄的博客-CSDN博客

python requests 带请求头Token发起http请求_python request token_软件测试李同学的博客-CSDN博客

python发送requests请求时,使用登录的token值,作为下一个接口的请求头信息 - 大海一个人听 - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/26196.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nodejs 下载地址 阿里云开源镜像站

nodejs 下载地址 阿里云开源镜像站 https://mirrors.aliyun.com/nodejs-release/ 我们下期见,拜拜!

【LSTM】理解LSTM

原文:https://colah.github.io/posts/2015-08-Understanding-LSTMs/ 递归神经网路 Humans don;t start their thinking from scratch every second. 人类都不是每一秒都从零开始思考。 from scratch 从零开始 当你读到这篇文章时,你理解每个单词时&a…

全志F1C200S嵌入式驱动开发(sd卡驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 说是sd卡,其实是micro sd卡,或者称之为tf卡更合适。一般的soc都支持从tf卡启动,所以用tf卡来学习soc、驱动和linux,对新人来说是比较合适的。前面我们已经用sd卡构建了一个类似…

【3-D深度学习:肺肿瘤分割】创建和训练 V-Net 神经网络,并从 3D 医学图像中对肺肿瘤进行语义分割研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Spring方式发送邮箱

1.导入依赖 <!--邮件发送依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency> 2.导入工具类 package com.example.demo.demo;import org.springfram…

基于单片机智能饮水机加热系统的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;LCD1602液晶显示当前水温&#xff0c;定时提醒&#xff0c;水量变化DS18B20检测当前水体温度&#xff1b;水位传感器检测当前水位&#xff1b;继电器驱动加热片进行水温加热&#xff1b;定时提醒喝水&#xff0c;蜂鸣器报警&#x…

plt.text()函数解析

plt.text(x, y, s, fontsize, verticalalignment,horizontalalignment,rotation , *kwargs) 参数&#xff1a; x,y:表示坐标值上的值s:表示说明文字fontsize:表示字体大小verticalalignment&#xff1a;垂直对齐方式 &#xff0c;参数&#xff1a;[ ‘center’ | ‘top’ | ‘…

vue-cesium的基本使用【一】

最近的项目中用到了cesium,也了解了一点关于cesium的知识&#xff0c;打点、 标绘、等等基础的功能点&#xff0c;但是在开发过程中使用原生的cesium编写对于初学者还是有点难度&#xff0c;为此&#xff0c;找到关于对cesium进行二次封装的开源项目vue-cesium,本次文章主要记录…

git 工具使用--分支管理

git 工具使用–分支管理 文章目录 git 工具使用--分支管理理解分支创建分支切换分支合并分支删除分支合并冲突分支管理策略分支策略bug分支删除临时分支总结 理解分支 分支管理是Git的杀手级功能之一。分支&#xff1a;就是科幻中的平行宇宙&#xff0c;当你正在电脑面前学习C…

基于Cyclone V SoC利用HLS实现卷积手写体数字识别设计

基于Cyclone V SoC利用HLS实现卷积手写体数字识别设计 本文是基于英特尔 Cyclone V SoC 开发板&#xff0c;利用 HLS 技术实现三层卷积两层池化两层全连接推理运算的手写体数字识别设计 硬件环境&#xff1a; Cyclone V SoC开发板 SD卡 电脑 软件环境&#xff1a; Windows 11 Q…

Mybatis-Plus标准数据层开发(详解)

标准数据层开发 一、标准数据层CRUD功能 功能自定义接口MP接口新增oolean save(T t)int insert(T t)删除boolean delete(int id)int deleteById( Serializable id)修改boolean update(T t)int updateById(T t)根据id查询T getById(int id)T selectById(Serializable id)查询全…

短视频抖音账号矩阵系统源码开发分享

引用&#xff1a;MySQL数据库&#xff0c;NGINX&#xff0c;PHP7.4&#xff0c;MySQL5.7&#xff0c;redis 媒体组件 组件 描述 image 图片 图片。支持 JPG、PNG、SVG、WEBP、GIF 等格式。 video 视频 视频组件。相关 API 请参考 tt.createVideoContext。 开发背景&…