免费的代码分享网站做网站推广和网络推广
news/
2025/9/23 7:01:58/
文章来源:
免费的代码分享网站,做网站推广和网络推广,2016网站优化,制作网站作品APIFox-自动获取登录状态操作
概述
作为纯后端开发码农#xff0c;每次接口开发完的调试很重要#xff0c;因此每次重复的手动获取登陆状态Token或者直接放行就太麻烦了。 APIFox提供了前置操作#xff0c;可以很方便的自动获取登录状态#xff0c;节省大量重复劳动时间。…APIFox-自动获取登录状态操作
概述
作为纯后端开发码农每次接口开发完的调试很重要因此每次重复的手动获取登陆状态Token或者直接放行就太麻烦了。 APIFox提供了前置操作可以很方便的自动获取登录状态节省大量重复劳动时间。
APIFox中的变量
APIFox中的变量有全局变量、环境变量与临时变量其中常用的是全局变量和环境变量。 详情参考https://zhuanlan.zhihu.com/p/550921426?utm_id0 全局变量存放不同环境请求中共同需要的变量参数。
全局变量操作pm.globals.get/set环境变量存放各自环境不同的变量参数。
环境变量操作pm.environment.get/set注意APIFox中还有许多内置变量不用用户自己创建如BASE_URL通过该变量可以获取不同环境下的前置URL。 具体操作 仅供参考需要根据自己的项目微调。 我这里的后端项目登录接口是返回Token与过期时间间隔秒具体设置操作如下。
1. 创建变量
由于我的开发环境本地与测试环境的用户名和密码是一样的所以我将其添加到了全局变量。由于我这里 开发环境本地后端项目与测试环境后端项目 使用的是同一个数据库因此当切换环境后会由于再次请求再次请求因为另一个环境中的Token变量可能是空的或者过期了而造成原本环境的Token失效因为是共用一个数据库原来的Token在后端由于再次登录被更新了。所以我这里将Token变量与过期时间间隔秒变量也放在了全局变量中。
2. 创建公共请求头
由于本后端项目的Token是放在每次请求的Header中的所以我将获取到的Token变量直接放到这里。另外该项目前后端都是JSON格式所以也加上了Content-type并定义为JSON格式。
3. 创建公共脚本 自己看注释自行根据自己的项目微调。 // 定义发送登录接口请求方法
function sendLoginRequest() {// 获取环境里的 前置URL - 这是默认内置的变量无需手动设置const baseUrl pm.environment.get(BASE_URL);/*全局变量操作pm.globals.get/set环境变量操作pm.environment.get/set参考APIFOX变量操作https://zhuanlan.zhihu.com/p/550921426?utm_id0*///由于我的开发环境本地与测试环境的用户名和密码是一样的所以我将其添加到了全局变量// 登录用户名这里从全局变量 LOGIN_USERNAME 获取也可以写死但是不建议const username pm.globals.get(LOGIN_USERNAME);// 登录用户名这里从全局变量 LOGIN_PASSWORD 获取也可以写死但是不建议const password pm.globals.get(LOGIN_PASSWORD);// 构造一个 POST x-www-form-urlencoded 格式请求。这里需要改成你们实际登录接口的请求参数。const loginRequest {url: baseUrl /sys/login,method: POST,// body 为 json 格式header: {Content-Type: application/json// 注意header 需要加上 Content-Type},body: {mode: raw,// 此处为 rawraw: JSON.stringify(// 这里和自己的后端项目需要的格式对应{userName: username,password: password}), // 序列化后的 json 字符串}};// 发送请求。// pm.sendrequest 参考文档: https://www.apifox.cn/help/app/scripts/api-references/pm-reference/#pm-sendrequestpm.sendRequest(loginRequest, function (err, res) {if (err) {console.log(res);console.log(err);} else {// 读取接口返回的 json 数据。// 如果你的 token 信息是存放在 cookie 的可以使用 res.cookies.get(token) 方式获取。// cookies 参考文档https://www.apifox.cn/help/app/scripts/api-references/pm-reference/#pm-cookiesconst jsonData res.json();console.log(jsonData);// 将 accessToken 写入环境变量 ACCESS_TOKENpm.environment.set(ACCESS_TOKEN, jsonData.token);/*这里由于我请求的后端项目的Token过期期间返回的是秒所以需要处理一下变为毫秒所以过期期间为当前时间有效毫秒*/// 将 accessTokenExpires 过期时间写入环境变量 ACCESS_TOKEN_EXPIRESpm.environment.set(ACCESS_TOKEN_EXPIRES,new Date().getTime()(jsonData.expire*1000));}});}// 获取全局变量里的 ACCESS_TOKENconst accessToken pm.globals.get(ACCESS_TOKEN);// 获取全局变量里的 ACCESS_TOKEN_EXPIRESconst accessTokenExpires pm.globals.get(ACCESS_TOKEN_EXPIRES);/*由于我这里 开发环境本地后端项目与测试环境后端项目 使用的是同一个数据库因此当切换环境后会由于再次请求再次请求因为另一个环境中的Token变量可能是空的或者过期了而造成原本环境的Token失效因为是一个数据库原来的Token在后端由于再次登录被更新了。解决方式开发环境本地与测试环境 的 Token变量与过期时间间隔变量 改变位置存放在全局变量开发环境与测试环境共用。*/// 如 ACCESS_TOKEN 没有值或 ACCESS_TOKEN_EXPIRES 已过期则执行发送登录接口请求if (!accessToken ||(new Date(accessTokenExpires) new Date())){sendLoginRequest();}
4. 为项目根目录添加前置脚本
我这里的项目是单体项目因此子接口直接继承父目录的设置就好了。 参考博文 https://apifox.com/blog/cookies-and-token/ https://zhuanlan.zhihu.com/p/550921426?utm_id0 https://apifox.com/help/environment-and-variables/environment-management https://blog.csdn.net/sinat_15872851/article/details/128842095
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911666.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!