charles
2024-05-20 0d91757d82f4cfd1586ab39cbe37f12d739ddc43
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
import axios from "axios";
import {Message} from "element-ui";
import router from "../../router";
//1.设置基础路径(能够统一管理接口的服务器地址) 配置接口的服务器地址
//http://localhost:3001:服务器地址(开发环境,测试环境,生产环境)
//export const BASE_URL="http://localhost:3001";
//axios.defaults.baseURL=process.env.VUE_APP_BASE_API;
//2.统一拦截请求 往请求头中设置token(后端需要根据请求头中的token,进行身份验证之后才可以去访问接口)
//request 请求对象(用来给后端传递数据的)
axios.interceptors.request.use(request=>{
    let token=localStorage.getItem("token");
    if(token){
        request.headers.Authorization=token;
    }
    return request;
});
//3.统一拦截后端的响应,然后进行统一的异常处理甚至是数据处理
axios.interceptors.response.use(response=>{
    let {data}=response;
    if(data.status==401){//后端:没有携带token ,以及 token超时都是401,但是他们的message消息提示不同
        let token=localStorage.getItem("token");
        if(token){//401 token还存在说明token超时了
            localStorage.removeItem("token");
        }
        Message.warning(data.message);
        setTimeout(()=>{
            router.push("/login");
        },2000);
    }
    return data;//就是后端响应的数据
});
export const request=axios;