axios实现拦截器

项目中通常使用token进行用户权限认证,需要在请求的header中添加token信息进行验证,拦截返回的状态码进行跳转或重新登陆,在全局配置这些不妥,所以新建一个axios实例进行项目的配置。
// util.js
import axios from 'axios'
import cookies from 'vue-cookies'
import router from 'vue-router'
export const $axios = axios.create({ // 这里是配置项
  timeout: 7000,
})

// 拦截请求
$axios.interceptors.request.use(
  config => {
    console.log(config);
    let t = cookies.get('t')
    if (t) {
      config.headers.t = t
    } else {
      router.replace({path: '/login'})
    }
    return config
  },
  err => {
    return Promise.reject(err)
  }
)

// 拦截响应
$axios.interceptors.response.use(
  response => {
    console.log(response)
    return response
  },
  err => {
    console.log(err);
    if (err.response) {
      switch (err.response.status) {
        case 401:
          // 这里写清除token的代码
          router.replace({
            path: 'login',
            query: {redirect: router.currentRoute.fullPath} // 登录成功后跳入浏览的当前页面
          })
      }
    }
    return Promise.reject(err)
  }
)
使用
import Vue from 'vue'
import {$axios} from './assets/lib/util'

Vue.prototype.$http = $axios
在使用axios时,可以通过请求拦截器来对请求进行必要的操作处理。请求拦截器在发送请求之前执行,可以用来添加统一的cookie、对请求体进行验证、设置请求头等操作。相当于是对每个接口里相同操作的一个封装。 通过创建一个axios实例,可以使用拦截器来拦截请求和响应。通过创建实例并设置相关配置,可以在需要拦截请求或响应的地方使用该实例来发起异步请求。而不需要拦截请求或响应的地方,则可以直接使用axios来发起异步请求。 拦截器在页面发送http请求时非常有用,可以对请求和响应进行特定的处理。比如,在拿到响应之前展示loading动画,或者在每个请求中附带后端返回的token等信息。对于请求较多的情况下,我们可以使用axios提供的拦截器API来进行处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [axios 请求拦截器&响应拦截器](https://blog.csdn.net/weixin_44428734/article/details/120077319)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [axios 拦截器](https://blog.csdn.net/YHLSunshine/article/details/123881984)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值