apifox 自动登录示例 前置操作 模拟登录
2023-09-11 14:16:38 时间
// 第一步:点击「根目录 - 前置操作」 // 第二步,环境变量中设置 LOGIN_USERNAME 和 LOGIN_PASSWORD // 第三步:必须让后端忽略验证码之类的验证 // 定义发送登录接口请求方法 // 官方教程:https://www.apifox.cn/help/app/best-practices/auth/#公共脚本示例 // 如何设置 headers: https://www.apifox.cn/help/app/scripts/examples/request-handle/#header-参数 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 + '/admin/login', method: 'POST', body: { mode: 'formdata', // 此处为 formdata // 此处为 formdata formdata: [ { key: 'userAccount', value: username }, { key: 'userPwd', value: password }, { key: 'authCode', value: '1234' } ] } } pm.sendRequest(loginRequest, function (err, res) { if (err) { console.log(err) } else { // 读取接口返回的 json 数据。 const jsonData = res.json() //token 50分钟后过期 const beijingtimeExpires = new Date(new Date().getTime() + 8 * 60 * 60 * 1000 + 1 * 50 * 60 * 1000) const token = 'Bearer ' + jsonData.user.tokenId const userAgent = jsonData.user.userAgent //设置token pm.environment.set('ACCESS_TOKEN_EXPIRES', beijingtimeExpires) pm.environment.set('ACCESS_TOKEN', token) pm.environment.set('User-Agent', userAgent) pm.request.headers.upsert({ key: 'Authorization', token }) pm.request.headers.upsert({ key: 'User-Agent', value: userAgent }) // 继续请求原来的接口 pm.sendRequest(pm.request, function (err, res) { if (err) { console.log(err) } else { console.log(res) } }) } }) } // 获取环境变量里的 ACCESS_TOKEN const accessToken = pm.environment.get('ACCESS_TOKEN') const userAgent = pm.environment.get('User-Agent') // 获取环境变量里的 ACCESS_TOKEN_EXPIRES const accessTokenExpires = pm.environment.get('ACCESS_TOKEN_EXPIRES') // 如 ACCESS_TOKEN 没有值,或 ACCESS_TOKEN_EXPIRES 已过期,则执行发送登录接口请求 if (!accessToken || (accessTokenExpires && new Date(accessTokenExpires) <= new Date(new Date().getTime() + 8 * 60 * 60 * 1000))) { sendLoginRequest() } else { pm.request.headers.upsert({ key: 'Authorization', value: accessToken }) pm.request.headers.upsert({ key: 'User-Agent', value: userAgent }) }
相关文章
- Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
- Java 第十一届 蓝桥杯 省模拟赛 无向连通图最少包含多少条边
- spring boot单元测试之六:用mockmvc模拟cookie(spring boot 2.4.3)
- spring boot单元测试之六:用mockmvc模拟cookie(spring boot 2.4.3)
- curl模拟访问已经存在的cookie
- Qt编写物联网管理平台49-设备模拟工具
- 用ABAP模拟JavaScript的柯里化语言特性(Curry)
- ML之FE:基于load_mock_customer数据集(模拟客户,单个DataFrame)利用featuretools工具实现自动特征生成/特征衍生
- ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
- Python实现点选验证码识别, 模拟登陆小破站并自动发弹幕
- nlp序列完全可以模拟人脑智能
- php curl模拟post请求提交数据样例总结
- ubuntu虚拟机下 虚拟摄像头 模拟摄像头 virtualCam
- 随机模拟(MCMC)
- ssh跳板登陆太麻烦,使用expect每次自动登录 利用expect 模拟键盘动作,在闲置时间之内模拟地给个键盘响应
- 【计算机二级Python】模拟试卷第6套选择题
- 综合实验交通灯的模拟控制