// 第一步:点击「根目录 - 前置操作」 // 第二步,环境变量中设置 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 }) }
标签:ACCESS,const,登录,示例,environment,TOKEN,apifox,pm From: https://www.cnblogs.com/CyLee/p/16964739.html