Newer
Older
smartKitchenFront / src / api / request / http.js
import axios from 'axios'
import { Message } from 'element-ui'
import { getToken } from '@/utils/auth'
import store from '@/store'

const instance = axios.create({
  baseURL: process.env.BASE_API, // api 的 base_url
  timeout: 50000 // 请求超时时间
})
// 请求守卫
instance.interceptors.request.use(config => {
  config.headers.token = getToken()
  return config
})
instance.interceptors.response.use(response => {
  /**
     * code为非200是抛错 可结合自己业务进行修改
     */
  const res = response.data
  // 如果是文件
  if (res instanceof Blob) {
    return response
  } else if (res.code !== 200) {
    // 50008:非法的token; 50012:其他客户端登录了;  50014:Token 过期了;
    if (res.code === 401 || res.code === 50012 || res.code === 50014) {
      store.dispatch('FedLogOut').then(() => {
        location.reload() // 为了重新实例化vue-router对象 避免bug
      })
    } else {
      Message({
        showClose: true,
        message: res.message,
        type: 'error',
        duration: 3000
      })
      return Promise.reject(res)
    }
  } else {
    return res.data
  }
},
err => {
  console.log('err ============')
  //  对于请求报错进行处理
  Message.error(err.message)
  // return ''
  return Promise.reject(err)
})
export { instance }