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); }, );