axios封装

import axios from 'axios'
import router from '@/router'
import { ElMessage } from 'element-plus'

// create an axios instance
const service = axios.create({
  baseURL: process.env.VUE_APP_URL, 
  timeout: 600000, // request timeout
  headers: {
    'Content-Type': 'application/json;charset=UTF-8'
  },
  transformResponse: [
    function (data: any) {
      try {
        data = JSON.parse(data)
        return data
      } catch (e) {
        return data
      }
    }
  ],
  transformRequest: [
    (data: any, headers: any): string => {
      headers.common.Authorization = localStorage.getItem('token')
      if (headers['Content-Type'] === 'multipart/form-data') {
        return data
      }
      return JSON.stringify(data)
    }
  ]
})

service.interceptors.request.use(
  (config) => {
    return config
  },
  (err) => {
    return Promise.reject(err)
  }
)

service.interceptors.response.use(
  (response) => {
    const data = response.data
    if (data.code === 200) {
      return data
    } else if (data.code === 1010005 || data.code === 523) {
      const route = router.currentRoute.value
      if (!route.path.includes('/login')) {
        // token过期
        window.localStorage.clear()
        window.sessionStorage.clear()
        // 执行login
      }

      return Promise.reject(data)
    } else {
      ElMessage({
        type: 'error',
        message: data.msg || data.message || data,
        duration: 3000
      })
      return Promise.reject(data)
    }
  },
  (error) => {
    ElMessage({
      type: 'error',
      message: error.message || error.msg,
      duration: 3000
    })
    return Promise.reject(error)
  }
)
export default service

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容