gjj
2025-02-26 ef9cf4de5502a7fc12cf06345cb9cd22a3c36edd
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
import axios from "axios";
import { Message, Loading } from "element-ui";
import { debounce } from "lodash-es";
import store from "../store/index";
import { getToken } from "./getToken.js";
 
let axiosBaseURL;
let axiosTimeout;
if (
    import.meta.env.PROD) {
    //生产环境
    const ProjectConfig = window.ProjectConfig;
 
    axiosBaseURL = ProjectConfig.axiosBaseURL;
    axiosTimeout = ProjectConfig.axiosTimeout;
} else {
    //非生产环境
    axiosBaseURL = "/api";
    axiosTimeout = 1000 * 30;
}
 
export const http = axios.create({
    withCredentials: false,
    baseURL: axiosBaseURL,
    timeout: axiosTimeout
});
 
 
 
 
//处理响应的结果,返回统一结构
function handleTheResponse(response) {
    console.log(`axios包装过的响应${response.config.url}`, response);
 
    let responseData = response.data;
    if (response.status === 200) {
        if (/^\s*$/g.test("" + responseData)) {
            responseData = {
                code: 1,
                message: "无响应数据",
                data: null,
            };
        }
    } else {
        return {
            code: 1,
            message: responseData ? responseData.message : "服务异常",
            data: responseData,
        };
    }
    if (!responseData || responseData.code !== 0) {
        // Message.error({ message: responseData ? responseData.message : "服务异常", duration: 1000 * 3 });
    }
    return responseData;
}
 
//处理错误,返回统一结构
function handleTheError(error) {
    console.log(`axios包装过的错误${error.config.url}`, error);
    const responseData = { code: -999, data: null };
    if (error.response) {
        const { data, status, statusText } = error.response;
        if (status === 500 && /^\s*$/gi.test(data + "")) {
            responseData.message = "服务异常,无响应数据";
        } else {
            responseData.data = data;
            responseData.message = `${statusText ?? "服务异常,请稍后再试"}`;
        }
    } else if (error.request) {
        responseData.message = "未收到服务端响应,请稍后再试";
    } else {
        responseData.message = "未发送请求,请检查请求参数是否正确";
    }
    Message.error({ message: responseData.message, duration: 1000 * 3 });
    return responseData;
}
 
//添加请求拦截器
http.interceptors.request.use(
    (config) => {
        if (config.withToken !== false) {
            config.headers["token"] = getToken();
        }
        return config;
    },
    (error) => {
        // console.log("request-error", error);
        //todo 封装成固定结构 {code,data,message}
        return handleTheError(error);
    },
);
 
//响应拦截器
http.interceptors.response.use(
    (response) => {
        //todo 封装成固定结构 {code,data,message}
        return handleTheResponse(response);
    },
    (error) => {
        //todo 封装成固定结构 {code,data,message}
        return handleTheError(error);
    },
);
// 引擎接口
let modelaxiosUrl
const ProjectConfig = window.ProjectConfig;
 
modelaxiosUrl = ProjectConfig.modelUrl;
export const modelhttp = axios.create({
    withCredentials: false,
    baseURL: modelaxiosUrl,
    timeout: axiosTimeout
});
 
//添加请求拦截器
modelhttp.interceptors.request.use(
    (config) => {
        if (config.withProjectId !== false) {
            config.headers["projectId"] = store.getters["common/currentProjectId"];
        }
        if (config.withToken !== false) {
            config.headers["token"] = getToken();
        }
        return config;
    },
    (error) => {
        // console.log("request-error", error);
        //todo 封装成固定结构 {code,data,message}
        return handleTheError(error);
    },
);
 
//响应拦截器
modelhttp.interceptors.response.use(
    (response) => {
        //todo 封装成固定结构 {code,data,message}
        return handleTheResponse(response);
    },
    (error) => {
        //todo 封装成固定结构 {code,data,message}
        return handleTheError(error);
    },
);