uniapp 微信小程序请求拦截器 接口封装

本文介绍了如何在uniapp中使用请求拦截器处理token验证,包括创建common文件夹中的request.js文件,设置请求头,以及example.js中对接口的封装和使用示例。同时提及了微信小程序的兼容性调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:
请求拦截器可以在我们需要传递请求头的时候使用,例如:token
也会在当token发生变化的时候给予响应,所以我们做好对应的判断即可

话不多说,直接进入正题:
1.首先在根目录创建common文件夹,
在里面创建request.js文件并加入以下代码:

export default {
   
  config: {
   
  //baseURL这里可以放自己的接口域名
    baseURL: "",
    getToken() {
   
    //获取token
      let token = uni.getStorageSync("userInfo").token;
      if (!token) {
   
        return uni.reLaunch({
    url: "/pages/login/login" });
      }
      return token;
    },
    //获取userid
    getUser() {
   
      let id = uni.getStorageSync("userInfo").id;
      if (!id) {
   
        return uni.reLaunch({
    
UniApp是一个基于Vue.js的跨平台应用开发框架,它允许开发者构建一次,多端部署,包括Web、App小程序等。在 UniApp 开发中,如果你需要处理每个网络请求前都检查并更新Token(通常用于身份验证),可以设置一个全局的请求拦截器。 以下是在uni-app中添请求拦截器并处理Token刷新的基本步骤: 1. **创建拦截器**: 首先,在项目中找到`uni-app`生成的`request.js`文件(一般位于`src/api`目录下),或者自定义一个文件来存放公共的网络请求配置。 ```javascript // request.js 或者自定义的请求拦截器文件 import axios from '@/utils/axios' axios.interceptors.request.use(config => { // 检查是否有Token并且在Token过期时尝试刷新 const token = localStorage.getItem('your_token_key') if (token) { config.headers.Authorization = 'Bearer ' + token } // 如果Token即将过期,发起Token刷新请求 const refreshTokenPromise = checkRefreshToken(token) return refreshTokenPromise.then(() => config).catch(error => Promise.reject(error)) }, error => { // 对错误做处理,比如记录日志或者显示给用户错误提示 console.error('Request failed with error', error.response.data) return Promise.reject(error) }) ``` 2. **Token刷新函数** (`checkRefreshToken`): 这里假设你有一个服务接口(如`/api/token/refresh`)来进行Token刷新。如果检测到Token快要过期,你需要调用这个接口,并在返回新Token后更新本地存储。 ```javascript function checkRefreshToken(token) { // 判断当前Token是否即将过期,这里仅作示例 let expirationTime = new Date(token.exp * 1000); let currentTime = new Date(); let timeDifference = Math.abs(expirationTime - currentTime); // 如果时间差小于某个阈值,比如5分钟,尝试刷新Token if (timeDifference < (60 * 5 * 1000)) { return axios.post('/api/token/refresh', { oldToken: token }).then(res => { localStorage.setItem('your_token_key', res.data.newToken); return res.data.newToken; }); } else { return Promise.resolve(token); // Token有效,无需刷新 } } ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值