最新要闻
- 每日观察!刚需速囤!中石化出品竹浆抽纸狂促:券后每包只需1元
- 环球观点:向木星前进!欧洲木星探测器JUICE发射成功:旅途长达八年
- 天天速读:薛之谦上热搜 巡演唱到一半被伴舞撞飞了:观众忍俊不禁
- 【大国基理】党建引领,创造基层治理“天津范式”
- 移动散热史革新!小米环形冷泵揭秘:热导率三倍于传统VC
- 仰望U8平替来了!原地掉头、100%爬坡度:奇瑞捷途出品
- 环球聚焦:年度“奇幻大片”潍坊风筝节上映 网友:放的是人类想象力
- 销量又该暴涨 大神绘制新款特斯拉Model 3:有豪车味了
- 天天简讯:历史一刻!贾跃亭的FF91量产车正式下线:百公里加速2.3秒 交付时间又“跳票”
- 环球微资讯!【最新】上海修订中小学生欺凌防治手册:欺凌行为并非普通打闹
- 焦点消息!小米13 Ultra搭载澎湃P2/G1芯片:支持应急模式 1%电量续航60分钟
- 马里奥游戏改编电影史上最强
- 智能快递车揽收功能规模化上线 京东小哥“好帮手”再升级
- 多省都要封杀!北京定义老头乐危害公共安全 倒逼大爷买新能源车、考驾照
- 环球热消息:首款下载量超10亿手游!《愤怒的小鸟》卖了:世嘉出价近70亿收购
- 华为首次下放卫星通信!nova 11系列上架预约:下周一发布
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界看热讯:Apifox手动和自动两种更新token方式(推荐自动)
Apifox 关于token的使用方式
前言,关于token的使用,仅做了简单的demo测试token效果。
1.手动登录获取token
顾名思义,因为只有登录之后才有token的信息,所以在调用其他接口前需要拥有token才能访问。
操作步骤1)添加环境变量、全局参数这里拿测试环境举例,在右上角环境中配置详细信息:测试环境填写变量名以及本地值{{token}}
(资料图)
再在全局参数添加参数名和默认值(这样就不用每个接口都写一遍token了)
2)在登录接口运行中添加后置操作选择提取变量,将token填入,并且根据登录接口返回的数据结构获取对应的token。例如我这里就是$.data.token。
添加完毕后,执行一次获取token接口,就会把登录接口返回的token数据填充到环境变量和全局参数中。
这样请求其他接口就可以在实际参数中看到最新的token了
特别注意:后置操作不是在接口文档中保存的,所以获取token的后置操作要保存为用例,下次运行用例才能将token填充到环境变量中去。
2.全自动登录实现方式
期望效果
运行接口用例的时候,自动完成登录,而无需手动登录。
自动登录过一次后,保存登录态,避免每次执行用例都调用登录接口。
实现思路
使用环境变量(如:token)保存登录需要的凭证。
如凭证有过期时间,使用环境变量(如:
token_expires
)保存登录凭证的过期时间。创建一个公共脚本:
判断环境变量token是否有值,以及token_expires是否过期,如果存在且未过期,跳出执行,否则下一步。
使用pm.sendRequest调用登录接口,将登录接口返回的登录凭证写入环境变量,过期时间也写入环境变量。
我这里登录获取token接口是没有token_expires的,所以我去掉了相关代码,下面最后面有完整的官方示例代码,请参考!
这是我的脚本代码://定义学校端查看方案列表接口请求方法,看token是否失效function sendViewSchemeListRequest() { // 获取环境里的 前置URL const baseUrl = pm.environment.get("BASE_URL"); const token = pm.environment.get("token"); //从环境变量获取orgcode const orgcode = pm.environment.get("orgcode"); // 构造一个 POST body 为 json 格式请求。 const viewSchemeListRequest = { url: baseUrl + "/service/schooliscqe/scheme/schemeList", method: "POST", header: { // 注意:header 需要加上 Content-Type "Content-Type": "application/json", "token": token, "orgCode": orgcode, }, body: { mode: "raw",// 此处为 raw // 序列化后的 json 字符串 raw: JSON.stringify( { "data": { "current": 1, "pageSize": 10 } }), }, }; // 发送请求。 pm.sendRequest(viewSchemeListRequest, function (err, res) { if (err) { console.log(err); } else { const jsonData = res.json(); // 将 token 写入环境变量 token pm.environment.set("message", jsonData.message); } });}// 定义发送登录接口请求方法function sendLoginRequest() { // 获取环境里的 前置URL const baseUrl = pm.environment.get("BASE_URL_LOGIN"); // 登录用户名,这里从环境变量 LOGIN_USERNAME 获取,也可以写死(但是不建议) const username = pm.environment.get("LOGIN_USERNAME"); // 登录密码,这里从环境变量 LOGIN_PASSWORD 获取,也可以写死(但是不建议) const password = pm.environment.get("LOGIN_PASSWORD"); //从环境变量获取orgcode const orgcode = pm.environment.get("orgcode"); // 构造一个 POST body 为 json 格式请求。 const loginRequest = { url: baseUrl + "/service/isptl/open/sso/login", method: "POST", header: { // 注意:header 需要加上 Content-Type "Content-Type": "application/json", "appId": "JF-ISWCC-WEB", "appToken": "9f3c8a5fc3710b08fc213b0955adac95eee853182b64496efe91e5d392e5e4a3614af5e43c1f945074e0ebe7ef895cae67a1368e61da8ca5c03dd98c94ee4c7c", "timeStamp": "1680845431151", "orgCode": orgcode, }, body: { mode: "raw",// 此处为 raw // 序列化后的 json 字符串 raw: JSON.stringify( { "data": { "loginType": "1", "accountName": username, "password": password, "mobile": "", "verifyCode": "" } }), }, }; // 发送请求。 pm.sendRequest(loginRequest, function (err, res) { if (err) { console.log(err); } else { const jsonData = res.json(); // 将 token 写入环境变量 token pm.environment.set("token", jsonData.data.token); } });}//请求学校端查看方案列表接口sendViewSchemeListRequest()// 获取环境变量里的 tokenconst token = pm.environment.get("token");// 获取环境变量里的 messageconst message = pm.environment.get("message");// 如 token 没有值或者message信息不正确,则执行发送登录接口请求if ( !token || message === "用户未登陆,请登录后重试" || message === "登录信息已过期,请重新登录") { sendLoginRequest();}
设置需要登录态的接口用例:
将用来验证登录态的参数值设置为
{{token}}
。此处在环境里的全局参数统一设置,所有接口运行时会自动加上全局参数,无需每个接口手动设置。
在 根目录前置操作里引用前面创建的公共脚本,保存后就可以了。
公共脚本示例
注意
- 示例脚本里的登录
用户名
和密码
,是从环境变变量LOGIN_USERNAME
和LOGIN_PASSWORD
获取,如果你直接拷贝代码的话,记得要手动设置这两个环境变量。 - 如果你们的 token 没有过期时间,可以将token_expires相关的代码去除。
// 定义发送登录接口请求方法function sendLoginRequest() { // 获取环境里的 前置URL const baseUrl = pm.environment.get("BASE_URL"); // 登录用户名,这里从环境变量 LOGIN_USERNAME 获取,也可以写死(但是不建议) const username = pm.environment.get("LOGIN_USERNAME"); // 登录密码,这里从环境变量 LOGIN_PASSWORD 获取,也可以写死(但是不建议) const password = pm.environment.get("LOGIN_PASSWORD"); // 构造一个 POST x-www-form-urlencoded 格式请求。这里需要改成你们实际登录接口的请求参数。 const loginRequest = { url: baseUrl + "/api/v1/login", method: "POST", // body 为 x-www-form-urlencoded 格式 body: { mode: "urlencoded", // 此处为 urlencoded // 此处为 urlencoded urlencoded: [ { key: "account", value: "apifox" }, { key: "password", value: "123456" }, ], }, /* // body 为 form-data 格式 body: { mode: "formdata", // 此处为 formdata // 此处为 formdata formdata: [ { key: "account", value: "apifox" }, { key: "password", value: "123456" } ] } // body 为 json 格式 header: { "Content-Type": "application/json", // 注意:header 需要加上 Content-Type }, body: { mode: "raw",// 此处为 raw raw: JSON.stringify({ account: "apifox", password:"123456" }), // 序列化后的 json 字符串 } // body 为 raw 或 json 格式 body: { mode: "raw", raw: "此处为 body 内容", } */ }; // 发送请求。 // pm.sendrequest 参考文档: https://www.apifox.cn/help/app/scripts/api-references/pm-reference/#pm-sendrequest pm.sendRequest(loginRequest, function(err, res) { if (err) { console.log(err); } else { // 读取接口返回的 json 数据。 // 如果你的 token 信息是存放在 cookie 的,可以使用 res.cookies.get("token") 方式获取。 // cookies 参考文档:https://www.apifox.cn/help/app/scripts/api-references/pm-reference/#pm-cookies const jsonData = res.json(); // 将 accessToken 写入环境变量 ACCESS_TOKEN pm.environment.set("ACCESS_TOKEN", jsonData.data.accessToken); // 将 accessTokenExpires 过期时间写入环境变量 ACCESS_TOKEN_EXPIRES pm.environment.set( "ACCESS_TOKEN_EXPIRES", jsonData.data.accessTokenExpires ); } });}// 获取环境变量里的 ACCESS_TOKENconst accessToken = pm.environment.get("ACCESS_TOKEN");// 获取环境变量里的 ACCESS_TOKEN_EXPIRESconst accessTokenExpires = pm.environment.get("ACCESS_TOKEN_EXPIRES");// 如 ACCESS_TOKEN 没有值,或 ACCESS_TOKEN_EXPIRES 已过期,则执行发送登录接口请求if ( !accessToken || (accessTokenExpires && new Date(accessTokenExpires) <= new Date())) { sendLoginRequest();}
关键词:
-
世界看热讯:Apifox手动和自动两种更新token方式(推荐自动)
Apifox关于token的使用方式前言,关于token的使用,仅做了简单的demo测试token效果。1 手动登录获取tok...
来源: 世界看热讯:Apifox手动和自动两种更新token方式(推荐自动)
每日观察!刚需速囤!中石化出品竹浆抽纸狂促:券后每包只需1元
环球观点:向木星前进!欧洲木星探测器JUICE发射成功:旅途长达八年
天天速读:薛之谦上热搜 巡演唱到一半被伴舞撞飞了:观众忍俊不禁
第08章_索引的创建与设计原则
【大国基理】党建引领,创造基层治理“天津范式”
天天看点:【财经分析】REITs拟纳入深港通 大湾区财富管理市场开放步伐加速
移动散热史革新!小米环形冷泵揭秘:热导率三倍于传统VC
仰望U8平替来了!原地掉头、100%爬坡度:奇瑞捷途出品
环球聚焦:年度“奇幻大片”潍坊风筝节上映 网友:放的是人类想象力
销量又该暴涨 大神绘制新款特斯拉Model 3:有豪车味了
天天简讯:历史一刻!贾跃亭的FF91量产车正式下线:百公里加速2.3秒 交付时间又“跳票”
环球微资讯!【最新】上海修订中小学生欺凌防治手册:欺凌行为并非普通打闹
天天热资讯!使用自签名证书,新手必然会遇到的问题
焦点消息!小米13 Ultra搭载澎湃P2/G1芯片:支持应急模式 1%电量续航60分钟
马里奥游戏改编电影史上最强
最新资讯:Hololens2 开发(仿真器)配置
智能快递车揽收功能规模化上线 京东小哥“好帮手”再升级
多省都要封杀!北京定义老头乐危害公共安全 倒逼大爷买新能源车、考驾照
环球热消息:首款下载量超10亿手游!《愤怒的小鸟》卖了:世嘉出价近70亿收购
播报:分布式事务--Seata
每日速讯:【环球财经】美联储官员发表鹰派言论 美元指数14日显著上涨
华为首次下放卫星通信!nova 11系列上架预约:下周一发布
【焦点热闻】美方以涉俄为由将多家中国企业列入清单实施制裁,商务部回应
【播资讯】史上最大屏!苹果15英寸MacBook Air确认搭载M2芯片:6月发布
医院回应护士上班戴美甲给患者扎针:已让其卸掉!专业人士科普
地产网红称没几千万怎么叫人才引热议:网友称价值观扭曲 谁钱多谁就是人才?
万元买手机很难吗?中美日韩等1月销量TOP 5:iPhone完爆安卓
全球简讯:学系统集成项目管理工程师(中项)系列06a_信息系统安全管理(上)
世界热推荐:国内油价17日料上调 部分地区95号汽油或重返“8元时代”
世界最资讯丨CPU买散片还是盒装 DIY老鸟:怎么选都是错!
当前视讯!沙特俄罗斯等减产后!国内新一轮油价调整将至 或重返8元时代
Java 在线编程工具上线(直接编译运行Java代码)
全球观天下!民声丨合理优化社区规模 提升社会服务质量
环球热门:诚意十足!国产科幻FPS《边境》制作组24小时直播修BUG
环球观速讯丨00后网红马若松遇车祸身亡监控曝光:面包车双实线掉头致追尾
当前速递!性能残血还带风扇 海盗船PCIe 5.0硬盘开卖:性价比竟然很高
世界今日讯!诺基亚一个暗箱操作 给华为喂了口九转大肠
天天快报!小米13 Ultra全曝光 核心配置已无悬念
苹果手机无法下载app什么原因_苹果手机无法下载app是什么原因
天天滚动:4.14训练解题报告
即时:Java + Jpcap实现监控 IP包流量
微头条丨MAUI之Android记录设备号+动态授权
当前焦点!RTX 4070显卡首发驱动531.61发布:4款游戏优化、修复黑屏崩溃
今日观点!南京动物园回应网红猴被欺负困在水中:没有霸凌 会游泳
欧洲探测器启程奔赴木星
【天天新要闻】内部类
当前热讯:c++打卡第五天
ChatGPT如何做投资?
全球今热点:docker_day04:Dockerfile docker私有仓库 dockercompose介绍 dockercompose部署 一件部署路飞项
全球关注:【金融街发布】证监会:取消期货从业资格管理 强化期货从业人员的事中事后监管
世界速讯:20万元买特斯拉?陶琳甩出5张图:中国价格全球最低
天天速看:高通垄断全球基带!中国紫光展锐排第4:2G/3G/4G/5G都很难
环球热议:仙履奇缘3中文版央视网 仙履奇缘3国语版免费
世界速讯:day01-项目介绍与环境搭建
全球快资讯:美光被审查 国产存储芯片崛起的机会来了?
1L体积塞进电源!联想推出小新mini主机:性能超越M2
【时快讯】403秒!中国"人造太阳"又创世界纪录:领先世界5年
环球微动态丨中国巡天太空望远镜明年底发射 将参与近地小行星防御撞击任务
全球讯息:方向导数
高中语文小说情节的作用_高中语文小说的情节题的答题方法 题型
环球快资讯:旺——消费信心加速回归
全球看热讯:可以攒钱了!任天堂Switch 2最快年底发布
实时:14年老牌网站 音悦台官宣回归后向EXO、坤音道歉:欠债一定还
当前快播:《塞尔达传说:王国之泪》实机中黑皮女子是谁:海利亚女神附身塞尔达?
今日精选:亚马逊加入战局:推出大语言模型“泰坦”为客户提供便宜芯片
【全球快播报】藏族女子出嫁带硬核嫁妆走红 价值百万只是一部分:男方根本不用巨额彩礼
今日播报!Nvidia Tensor Core-MMA PTX编程入门
中诚信大湾区信用债券指数系列正式发布
上榜门槛全线上升!2023年一季度粤港澳湾区房企销售榜发布
当前聚焦:通用官宣放弃苹果CarPlay 车企车机自主化势在必行?
等等党措手不及!内存、SSD现货价已开始反弹:三星/美光疯狂减产奏效了
腾讯回应工信部最新要求:微信QQ故障已批评和处罚相关负责人
全球热消息:员工用指纹膜帮同事打卡被开除 不服起诉 法院:不诚信 公司合法解除
天天微动态丨干掉车顶大鼓包!禾赛科技发布舱内激光雷达:高度仅25mm
MySQL学习笔记-索引
如何通过Java程序合并Word文档
观焦点:使用appuploader工具发布证书和描述性文件教程
Vue之 vue-router
记录-Vue.js模板编译过程揭秘:从模板字符串到渲染函数
男子当着7岁女孩面刺56刀杀死前女友:已执行死刑,一审时曾被判死缓
当前讯息:七彩虹五大RTX 4070开卖:水神/火神5699元!神秘新卡加量不加价
号称“不泄密” 微信键盘Windows版上线:不支持Win7
4799元的RTX 4070显卡上市 厂商不急于增产:库存还没完 不想降价
碎片化一地鸡毛!安卓14推送:安卓13用户量仍少的可怜
全球动态:微信功能异常大量用户中招!工信部指导腾讯:重要业务安全稳定
axiom——一款基于云的分布式网络安全扫描工具框架
低代码起势,程序员闷头开发的日子结束了
世界观速讯丨美原油交易策略:油价受阻于200日均线,关注IEA月报
焦点速看:恒生指数14日收涨0.46% 有色金属行业领涨
AITO问界M5智驾版将亮相上海国际车展 余承东:双天花板级体验
世界看热讯:中国药卖给美国人有多难
12元在家看国产科幻大片!《流浪地球2》全网上线:爱优腾会员不免费
当前通讯!7年了!AMD CUDA杀手ROCm终于登陆Windows、支持游戏显卡
俄罗斯发力自主OS系统 无奈碎片化:Linux就有19种
无极县政府网 无极县政府
实时焦点:用 Go 剑指 Offer 31. 栈的压入、弹出序列 (辅助栈)
企业内部培训网站为例,探索云上成本优化
世界新资讯:【财经分析】房企融资边际回暖 结构分化背景下择券仍需审慎
当前通讯!收评:沪指涨0.32%创年内收盘新高 半导体行业掀涨停潮