AdaKing88
2023-08-23 9cad48db6c56c3e2796a9d6da881817ef13b6eca
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
import axios from "axios";
// cookies
import {
  getToken,
  getUsername,
  removeToken,
  removeUsername,
} from "@/utils/cookies"; // 这是封装好的方法
// ElementUI 单独引入
import { ElMessage } from "element-plus";
// vue-router
import router from "@/router";
// 创建实例
const instance = axios.create({
  baseURL: process.env.VUE_APP_API, // 请求地址
  timeout: 5000, // 超时
});
 
// 拦截器
// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // if (getToken()) {
    config.headers["Authorization"] = getToken(); // 携带token
    config.headers["X-Access-Token"] = getToken(); // 携带token
    // }
    // if (getUsername()) {
    //   config.headers["Username"] = getUsername(); // 携带用户名
    // }
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);
// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    const data = response.data;
    if (data.message == null && data.msg == null) data.message = "操作失败";
    if (data.code !== 0 && data.code !== 200) {
      ElMessage({
        message: data.message,
        type: "error",
      });
      return [];//Promise.reject(data);
    } else {
      return data;
    }
  },
  function (error) {
    console.log("err response", error.request.response);
    const errorData = error.request.response;
    if (errorData.message) {
      ElMessage({
        message: errorData.message,
        type: "error",
      });
    }
    // token失效自动退出
    if (error.request.status ==401) {
      router.replace({
        name: "Login",
      });
      removeToken();
      removeUsername();
    }
    // 对响应错误做点什么
    return Promise.reject(errorData);
  }
);
// 暴露instance
export default instance;