叶松
2023-09-26 6b2db463c1dc672db49b761f68068e438b77d043
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
import axios from 'axios';
import router from '../router/index';
import $message from 'element-ui';
// 创建axios实例
const request = axios.create({
  baseURL: '/suapi',
  timeout: 1000 * 100
})
 
// post请求添加请求头
request.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
 
// 请求拦截器
request.interceptors.request.use((config) => {
  const token = sessionStorage.getItem("token")
  if (token) {
    config.headers.usertoken = token;
  }
  return config
})
 
// 响应拦截器
request.interceptors.response.use((response) => {
  if (response.status === 200) {
    if(response.data?.statusCode === '00403') {
      $message.Message.warning("登陆超时,请重新登录!")
      router.replace({
        path: "/login",
        query: {
          redirect: router.currentRoute.fullPath
        }
      })
    } else {
      return Promise.resolve(response.data)
    }
  } else {
    return Promise.reject(response.data)
  }
},
(error) => {
  const { response } = error
  if (response) {
    errorHandle(response)
    return Promise.reject(response.data)
  } else {
    $message.Message.error("网络连接超时,请检查网络...")
  }
});
 
 
// 统一错误处理方法
const errorHandle = (response) => {
  switch (response.status) {
    case 400:
      $message.Message.warning("请求参数错误...")
      break;
    case 401:
      // 登陆后跳转回当前
      router.replace({
        path: "/login",
        query: {
          redirect: router.currentRoute.fullPath
        }
      })
      break;
    case 403:
      $message.Message.warning("登陆超时,请重新登录...")
      router.replace({
        path: "/login",
        query: {
          redirect: router.currentRoute.fullPath
        }
      })
      break;
    case 404:
      $message.Message.error("请求不存在...")
      break;
    case 500:
      $message.Message.warning(response.data.msg || response.data.message)
      break;
    default:
      $message.Message.error("网络连接超时,请检查网络...")
  }
}
 
export default request;