Blame view

pc-master/src/util/server.js 2.68 KB
3f535f30   杨鑫   '初始'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
  // 引入axios
  import Vue from 'vue'
  import promise from 'es6-promise'
  import axios from 'axios'
  import store from '@/store/index'
  // import localStorage from '../storage/localStorage'
  import Cookie from 'js-cookie'
  promise.polyfill()
  
  // export const baseURL = (process.env.NODE_ENV === 'production') ? '/api' : 'http://172.16.61.48/api'
  export const baseURL = (process.env.NODE_ENV === 'production') ? '/api' : 'http://8.130.38.56:8027/api'
  export const uploadURL = 'http://localhost:9007'
  
  const service = axios.create({
    baseURL,
    headers: {
      'X-Requested-With': 'XMLHttpRequest'
    },
    withCredentials: true,
    timeout: 20000 // 请求超时 20s
  })
  
  // 请求拦截器
  service.interceptors.request.use(config => {
    // 是否为当前的请求加上请求头 token
    // if (localStorage.get('token')) {
    //   config.headers['x-auth-token'] = localStorage.get('token')
    // }
    if (Cookie.get('token')) {
      config.headers['Authorization'] = Cookie.get('token')
    }
    return config
  }, error => {
    return Promise.reject(error)
  })
  
  // 响应拦截器
  service.interceptors.response.use(
    (response) => {
      if (response.data.code === '20005' || response.data.code === '20004') {
        store.commit('resetVuex')
        Cookie.remove('token')
        store.commit('IS_LOGIN', false) // 清除顶部导航栏数据
        store.commit('SHOW_LOGIN') // 展示登录弹框
      }
      return response
    },
    err => {
      // 失败响应
      if (err && err.response) {
        switch (err.response.status) {
          case 400:
            err.message = '请求无效,请检查参数是否正确!'
            break
  
          case 401:
            err.message = '未经授权,访问被拒!'
            break
  
          case 403:
            err.message = '拒绝访问!'
            break
  
          case 404:
            err.message = `地址不存在!`
            break
  
          case 408:
            err.message = '请求超时!'
            break
  
          case 500:
            err.message = '系统错误!'
            break
  
          case 501:
            err.message = '该方法未实现!'
            break
  
          case 502:
            err.message = '网管出错!'
            break
  
          case 503:
            err.message = '服务不可用!'
            break
  
          case 504:
            err.message = '网关请求超时'
            break
  
          case 505:
            err.message = 'HTTP版本不受支持'
            break
  
          default:
        }
        if (err.response.data.error) {
          err.message = err.response.data.error
        }
        Vue.prototype.$message.closeAll()
        // Vue.prototype.$message.error(err.message)
        // router.push({name: 'error', params: {message: err.message, status: err.response.status}})
      }
    }
  )
  export default service