天天看點

axios攔截封裝

import axios from 'axios'
import { Notification } from 'element-ui'
import { gbs } from '@/config/settings'
axios.defaults.baseURL = gbs.host // 配置axios請求的位址
axios.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8'
axios.defaults.crossDomain = true
axios.defaults.withCredentials = true // 設定cross跨域 并設定通路權限 允許跨域攜帶cookie資訊

// 配置發送請求前的攔截器 可以設定token資訊
axios.interceptors.request.use(
  config => {
    // 這裡配置全局loading
    if (!(/\.json/.test(config.url))) {
      // $('#screen').show()
    }

    return config
    // return Promise.resolve(config)
  },
  error => {
    return Promise.reject(error)
  }
)

axios.interceptors.response.use(
  res => {
    // loading結束
    $('#screen').hide()
    return Promise.resolve(res.data)
  },
  error => {
    $('#screen').hide()
    if (error.response && error.response.config.url.includes('findAlertLevelList')) {
      return Promise.reject(error)
    }
    if (gbs.inDev) {
      Notification({
        message: '連接配接錯誤!',
        position: 'bottom-right',
        customClass: 'toast toast-error'
      })
      if (error.toString().includes('776')) {
        window.location.href = window.location.origin + '/#/login'
      }
    } else {
      if (error.toString().includes('776')) {
        window.location.href = window.location.origin + '/loginPage'
      }
      tooltip('', '連接配接錯誤!', 'error')
    }
    return Promise.reject(error)
  }
)

export default axios
           

繼續閱讀