liuxiaolong
2019-05-06 acc45d2ece02563964d7b8a22ff0c40bd8358889
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
import axios from 'axios'
import qs from 'qs'
import Message from '@/components/common/toasted'
import router from '@/router'
 
const Axios = axios.create({
  baseURL: '/data', /* //"http://139.224.105.107:8001/backend/", // 可用做反向代理 */
  //  timeout: 100000,
  responseType: 'json',
  withCredentials: true, // 是否允许带cookie这些
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
  }
})
 
/* //POST传参序列化(添加请求拦截器) */
Axios.interceptors.request.use(
  config => {
    // 在发送请求之前做某件事
    let Public = {
      // 'srAppid': ""
    }
    if (config.method === 'post' || config.method === 'put' || config.method === 'delete') {
      // 序列化
      // config.data = qs.stringify(config.data);
      config.data = qs.stringify(Object.assign(Public, config.data))
    } else {
      config.method = 'get'
      config.params = Object.assign(Public, config.data)
    }
    if (config.method === 'get') {
      config.headers = {
        'X-Requested-With': 'XMLHttpRequest',
        'Accept': 'application/json',
        'Content-Type': 'application/json; charset=UTF-8'
      }
    } else {
      config.headers = {
        'X-Requested-With': 'XMLHttpRequest',
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
      }
    }
    // 若是有做鉴权token , 就给头部带上token
    if (sessionStorage.token) {
      config.headers.Authorization = sessionStorage.token
    }
    return config
  },
  error => {
    /*  Message({
      showClose: true,
      message: "提交出错,请联系管理员!",
      type: "error"
    }); */
    return Promise.reject(error)
  }
)
 
/* //返回状态判断(添加响应拦截器) */
Axios.interceptors.response.use(
  res => {
    /* //对响应数据做些事 */
    if (res.data && !res.statusText === 'OK' && res.status !== 200) {
      Message({
        message: res.data.message,
        type: 'error'
      })
      return Promise.reject(res.data)
    }
 
    // 登陆超时判断
    if ((res.data && !res.data.policeCameravideoIsLoginTimeout) || !res.data.data.policeCameravideoIsLoginTimeout) {
      Message({
        message: '登录状态信息过期,请重新登录',
        type: 'error'
      })
      router.push({
        path: '/login'
      })
      return Promise.reject(res.data)
    } else {
      window.sessionStorage.setItem('policeCameravideoIsLoginTimeout', true)
    }
    return res.data ? res.data : {}
 
    /* //return res.data ? res.data : {}; */
  },
  error => {
    let errJson = {
      success: false
    }
    // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面
    if (error && error.response) {
      switch (error.response.status) {
        case 400:
          errJson.status = error.response.status
          errJson.message = '请求错误(400)'
          break
        case 401:
          errJson.status = error.response.status
          errJson.message = '未授权,请重新登录(401)'
          break
        case 403:
          errJson.status = error.response.status
          errJson.message = '拒绝访问(403)'
          break
        case 404:
          errJson.status = error.response.status
          errJson.message = '找不到请求路径(404)'
          break
        case 408:
          errJson.status = error.response.status
          errJson.message = '请求超时(408)'
          break
        case 500:
          errJson.status = error.response.status
          errJson.message = '服务器错误(500)'
          break
        case 501:
          errJson.status = error.response.status
          errJson.message = '服务未实现(501)'
          break
        case 502:
          errJson.status = error.response.status
          errJson.message = '网络错误(502)'
          break
        case 503:
          errJson.status = error.response.status
          errJson.message = '服务不可用(503)'
          break
        case 504:
          errJson.status = error.response.status
          errJson.message = '网络超时(504)'
          break
        case 505:
          errJson.status = error.response.status
          errJson.message = 'HTTP版本不受支持(505)'
          break
        default:
          errJson.status = error.response.status
          errJson.message = `连接出错(${error.response.status})!`
      }
 
      if (errJson.status >= 400 && errJson.status < 500) {
      // 跳转错误页面
        router.push({
          path: '/error',
          query: errJson
        })
      } else {
        // 服务器错误退出系统,弹窗提示
        Message({
          showClose: true,
          message: errJson.message,
          type: 'error'
        })
        router.push({
          path: '/login'
        })
      }
    } else {
      errJson.message = '连接服务器失败!'
      Message({
        showClose: true,
        message: '连接服务器失败!',
        type: 'error'
      })
      // router.push({
      //   path: '/login'
      // });
    }
    // 返回 response 里的错误信息
    return Promise.reject(errJson)
  }
)
export default Axios