当前位置: 首页 > news >正文

小程序无感刷新

下载wechat-http依赖

npm install wechat-http

封装请求拦截器和相应拦截器,借助refreshToken实现无感刷新

// 导入 http 模块
import http from 'wechat-http'
// 基础路径,同时需添加合法请求域名
http.baseURL = 'https://live-api.itheima.net'
// 配置请求拦截器
http.intercept.request = function (options) {// 扩展头信息const defaultHeader = {}// 身份认证defaultHeader.Authorization = 'Bearer ' + getApp().token// 与默认头信息合并options.header = Object.assign({}, defaultHeader, options.header)// 处理后的请求参数return options
}
// 响应拦截器,返回核心数据 data
http.intercept.response = async ({data,config
}) => {// 如果状态码为401,则表明token已失效if (data.code === 401) {// 获取应用实例const app = getApp()// 1.3 状态为 401 且接口为 /refreshToken 表明 refreshToken 也过期了if (config.url.includes('/refreshToken')) {// 获取当前页面的路径,保证登录成功后能跳回到原来页面const pageStack = getCurrentPages()const currentPage = pageStack.pop()const redirectURL = currentPage.route// 跳由跳转(登录页面)return wx.redirectTo({url: '/pages/login/index?redirectURL=/' + redirectURL,})}// 1.1 调用接口获取新的tokenconst res = await http({url: '/refreshToken',method: 'POST',header: {Authorization: 'Bearer ' + app.refreshToken,},})// 检测接口是否调用成功if (res.code !== 10000) return wx.utils.toast('更新token失败了!')// 重新存储新的 tokenapp.setToken('token', res.data.token)app.setToken('refreshToken', res.data.refreshToken)// 1.2 获取到原来接口请求的参数config = Object.assign(config, {header: {// 更新后的 tokenAuthorization: 'Bearer ' + res.data.token,},})// 重新发请求return http(config)}// 只保留data数据,其它的都过滤掉return data
}// 普通的模块导出
export default http
http://www.lryc.cn/news/196906.html

相关文章:

  • Unity C#随笔:简述String和StringBuilder的区别
  • 图论相关算法
  • Python人工智能需要学什么
  • Java 获取请求真实IP
  • Python突破浏览器TLS/JA3 指纹
  • web安全之XSS攻击
  • 【技巧】如何设置Excel表只输入固定内容?
  • 手机抬手亮屏解锁,用到了哪些硬件?
  • AI大模型高速发展,Web3还远吗?
  • CSS 滚动驱动动画 animation-range
  • 快速学习MyBatisPlus
  • ElasticsearchRestTemplate 和ElasticsearchRepository 的使用
  • Typora +Picgo 搭建个人笔记
  • 八、K8S之HPA自动扩缩容
  • 损失函数总结(二):L1Loss、MSELoss
  • 力扣(LeetCode)2530. 执行 K 次操作后的最大分数(C++)
  • C# 快速简单反射操作
  • 【python高级】设计模式、类工厂、对象工厂
  • Flink的算子列表状态的使用
  • 使用 Github Actions 工作流自动部署 Github Pages
  • Xposed hook 抖音账户信息
  • 回顾 | E³CI效能认知与改进论坛,助力企业研发效能度量和提升
  • 科技的成就(五十二)
  • 【23种设计模式】装饰器模式
  • 解决IDEA中SpringBoot项目创建多个子模块时配置文件小绿叶图标异常问题
  • 【马蹄集】—— 概率论专题
  • Spring 6整合单元测试JUnit4和JUnit5
  • 【好书推荐】深入理解现代JavaScript
  • 高效协同: 打造分布式系统的三种模式
  • 机器学习-无监督学习之聚类