Axios拦截器使用旧的令牌而不是新获取的访问令牌进行重试。
创始人
2024-09-28 21:01:08
0

在Axios中,你可以通过使用拦截器来处理请求和响应。为了解决Axios拦截器使用旧的令牌而不是新获取的访问令牌进行重试的问题,你可以使用以下代码示例:

import axios from 'axios';

// 创建一个Axios实例
const api = axios.create({
  baseURL: 'https://api.example.com',
});

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    // 在发送请求之前,检查是否有新的访问令牌
    const newAccessToken = getNewAccessToken();
    if (newAccessToken) {
      // 如果有新的访问令牌,将其设置到请求头中
      config.headers['Authorization'] = `Bearer ${newAccessToken}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
api.interceptors.response.use(
  (response) => {
    return response;
  },
  (error) => {
    // 如果响应返回401错误(未授权),并且没有进行过重试
    if (error.response.status === 401 && !error.config._retry) {
      error.config._retry = true;

      // 获取新的访问令牌
      return getNewAccessToken()
        .then((newAccessToken) => {
          // 如果成功获取新的访问令牌,将其设置到请求头中并重试请求
          error.config.headers['Authorization'] = `Bearer ${newAccessToken}`;
          return axios(error.config);
        })
        .catch((error) => {
          return Promise.reject(error);
        });
    }

    return Promise.reject(error);
  }
);

// 示例API请求
api.get('/data')
  .then((response) => {
    console.log(response.data);
  })
  .catch((error) => {
    console.error(error);
  });

// 模拟获取新的访问令牌
function getNewAccessToken() {
  // 返回一个Promise,用于模拟异步操作
  return new Promise((resolve, reject) => {
    // 模拟异步获取新的访问令牌
    setTimeout(() => {
      const newAccessToken = 'new_access_token';
      resolve(newAccessToken);
    }, 2000);
  });
}

在上面的示例中,我们创建了一个名为api的Axios实例,并添加了请求和响应拦截器。在请求拦截器中,我们检查是否有新的访问令牌,并将其设置到请求头中。在响应拦截器中,如果响应返回401错误(未授权),并且没有进行过重试,我们会获取新的访问令牌,并将其设置到请求头中并重试请求。这样,即使在请求过程中访问令牌过期,我们也能够获取新的访问令牌并重试请求。

相关内容

热门资讯

透视推荐!hh poker软件... 透视推荐!hh poker软件(透视)wepokerplus开挂,教程教材(有挂助手)-哔哩哔哩1、...
epoker有透视吗!wepo... epoker有透视吗!wepoker怎么看牌型(透视)挂-其实分享是真的挂1、这是跨平台的wepok...
透视开挂!wepoker-h5... 透视开挂!wepoker-h5下载(透视)wpk私人局有透视吗,教程烘培(有挂方法)-哔哩哔哩1、w...
wepoker开辅助能查到吗!... wepoker开辅助能查到吗!wepoker有辅助工具吗(透视)方法-果然教你真的有挂wepoker...
透视总结!佛手大菠萝有挂吗(透... 透视总结!佛手大菠萝有挂吗(透视)wepoker挂,教程妙计(有挂细节)-哔哩哔哩1、佛手大菠萝有挂...
wpk模拟器多开!We pok... wpk模拟器多开!We poker辅助器下载(透视)工具-竟然有挂有挂wpk模拟器多开!We pok...
透视总结!hhpoker透视实... 透视总结!hhpoker透视实战视频(透视)拱趴大菠萝辅助神器,教程资料(有挂透视)-哔哩哔哩1、拱...
佛手在线是不是有挂!we-po... 佛手在线是不是有挂!we-poker软件(透视)器-一贯必备存在有挂1)佛手在线是不是有挂辅助插件:...
透视透视!wepoker怎么设... 透视透视!wepoker怎么设置盖牌(透视)wpk透视是真的假的,教程手册(真是有挂)-哔哩哔哩1、...
wepoker辅助是真的假的!... wepoker辅助是真的假的!poker world辅助(透视)工具-都是开挂是有挂1、超多福利:超...