vue3 ts 封装axios,配置axios前置拦截器,让所有axios请求携带token
 
  
  
 
 
http.ts
 
import axios from 'axios' 
import router from '@/router'
import Qs from 'qs'
import { ElMessage } from 'element-plus'
const { prefixBasePath } = require('../../../config/basePath')
axios.defaults.baseURL = prefixBasePath;
axios.interceptors.request.use(config => {
  
  let authorization = localStorage.getItem("Authorization");
  
  if (authorization) {
  
    config.headers['Authorization'] = authorization;
  }
  
  return config;
}, error => {
  Promise.reject(error);
})
export function getOneOrAllData(url: any, params: any, hideTips: any) {
  return new Promise((resolve, reject) => {
    showLoading()
    axios.get(url, {
      params: params,
      
      paramsSerializer: {
        serialize: function (params) {
          return Qs.stringify(params, { arrayFormat: 'repeat' })
        }
      },
    })
      .then(res => {
        hideLoading()
        switch (res.data.code) {
          case 401:
            jumpToLogin()
            break
          case 500:
            ElMessage.error(res.data.message)
            break
          case 200:
            
            
            resolve(res.data)
            break
          default:
            Toast(res.data.message)
            resolve(res.data)
            break
        }
      })
      .catch(err => {
        errMsg(err)
        reject(err)
      })
  })
}
export function addOrReviseData(url: any, params: any, showTips: any, hideLoads: any) {
  return new Promise((resolve, reject) => {
    
    
    
    
    
    if (!hideLoads)
      showLoading()
    axios.post(url, params)
      .then(res => {
        hideLoading()
        switch (res.data.code) {
          case 401:
            jumpToLogin()
            break
          case 500:
            ElMessage.error(res.data.message)
            resolve(res.data)
            break
          case 200:
            if (showTips)
              ElMessage.success(res.data.message)
            resolve(res.data)
            break
          default:
            resolve(res.data)
            break
        }
      })
      .catch(err => {
        errMsg(err)
        reject(err)
      })
  })
}
export function logIn(url: any, params: any) {
  return new Promise((resolve, reject) => {
    showLoading()
    axios.post(url, params)
      .then(res => {
        switch (res.data.code) {
          case 500:
            ElMessage.error(res.data.message)
            break
          case 200:
            ElMessage.success(res.data.message)
            resolve(res.data)
            break
        }
      })
      .catch(err => {
        errMsg(err)
        reject(err)
      })
  })
}
export function logOut(url: any, params: any) {
  return new Promise((resolve, reject) => {
    axios.get(url, { params: params })
      .then(res => {
        ElMessage.success(res.data.message)
        jumpToLogin(true)
      })
      .catch(err => {
        jumpToLogin(true)
      })
  })
}
function jumpToLogin(showTips) {
  router.push({ path: '/login' })
}
 
 
app.ts
 
import { getOneOrAllData, addOrReviseData, logIn, logOut} from './http'
function GlobalUrl() {
  return '/globalApi'
}
export const login = (p: any) => logIn(GlobalUrl() + '/login', p, false)
export const logout = (p: any) => logOut(GlobalUrl() + '/logout', p, false)
export const addOrUpdate = (p: any) => addOrReviseData(GlobalUrl() + '/addOrUpdate', p, true)
export const getList = (p: any) => getOneOrAllData(GlobalUrl() + '/getList', p, false)
 
 
vue文件
 
import { login } from "@/app"
login(){
	login(form).then((res: any) => {
		console.log(res)
	}
}