Vue配置拦截器

举报
小小张自由--张有博 发表于 2021/12/22 16:30:21 2021/12/22
【摘要】 Vue配置拦截器


配置Vue环境为:

Vue:2.5.2,iview:3.2.2

框架:为新版项目PC端框架,与之前的Vue2示例框架冲突

新版项目PC端参考地址:git@IP:integral/frontend/integral-frontend-pc2.1.git

1.png

目的:为什么要做相应的配置呢?

原因在于前端调用后端接口时,每个接口都会携带token。前端因为要调用很多后端接口,调用一次都要用一次token,这样就要造成编写重复的代码,导致代码冗余,也浪费了开发时间。而配置好拦截器便可以轻松的解决这个问题。


第一步:

1).在src目录下创建axios文件夹,并且文件夹下创建index.js文件

2.png


2).index.js文件中的代码内容:

import Vue from 'vue'
import axios from 'axios'
// import router from '../router'

const instance = axios.create({
  baseURL: 'http://192.168.22.126',
  // 超时时间
  timeout: 5000
})

Vue.prototype.$axios = axios
// axios.defaults.baseURL = baseUrl

// http请求
// axios request 拦截器
axios.interceptors.request.use(
  config => {
    // 下面会说在什么时候存储 token,判断是否已经携带了token信息
    if (localStorage.getItem('token')) {
      config.headers['Authorization'] = localStorage.getItem('token')
      config.headers['Content-Type'] = 'application/json'
      var companyId = localStorage.getItem('schoolNo') + 'BnaL7HrFBqYVsLude4MNVd'
      config.headers['companyId'] = companyId
    }
    return config
  },
  err => {
    return Promise.reject(err)
  }
)

// axios response 拦截器
axios.interceptors.response.use(
  response => {
    // 判断一下响应中是否有token,如果有就直接使用此token替换掉本地的token
    var token = response.headers.Authorization
    if (token) {
      // 如果header中存在token,那么触发refreshToken方法,替换本地的token
      axios.defaults.headers.common['Authorization'] = token
    }
    return response
  },
  error => {
    return Promise.reject(error)
    // 这里可以根据业务需要,填写返回的错误码
  }
)

Vue.http = Vue.prototype.$http = instance
export default axios


第二步:在main.js文件中引入axios,导入拦截器

3.png


代码内容:

import axios from './axios' // 导入拦截器 axios封装

Vue.prototype.$axios = axios

配置完成,成功运行。

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。