import axios from "axios"; import router from "@/router"; import { getDouyinToken, getToken } from "@/utils/auth"; // 创建axios实例 const service = axios.create({ baseURL: import.meta.env.VITE_APP_API_PHP_IMPORT_URL, // api 的 base_url // baseURL: "/import_api", // api 的 base_url timeout: 1000 * 20, // 请求超时时间 }); // request拦截器 service.interceptors.request.use( (config) => { if (getToken()) { config.headers["token"] = getToken(); } if (!config.headers["Content-Type"]) { config.headers["Content-Type"] = "application/json"; } return config; }, (error) => { // 确保错误回调返回Promise,避免状态异常 return Promise.reject(error); } ); // response 拦截器 service.interceptors.response.use( (response) => { const data = response.data; console.log(data); if (data.code == 0) { ElNotification.error({ title: data.msg, duration: 5000, }); return; } if (data.code == 439 || data.code == 303) { ElNotification.error({ title: "请登录", duration: 5000, }); return; } if (data.code == 4399) { ElNotification.error({ title: data.msg, duration: 5000, }); return data; } // if (data.code == 1 && !data.data) { // ElNotification.success({ // title: data.msg, // duration: 5000 // }) // return true; // } return data.data; }, (error) => { console.log(error); if (axios.isCancel(error)) { console.log("请求已取消"); ElNotification.error({ title: "请求已取消", duration: 5000, }); return Promise.reject("请求已取消"); } // 兼容blob下载出错json提示 if ( error.response.data instanceof Blob && error.response.data.type.toLowerCase().indexOf("json") !== -1 ) { const reader = new FileReader(); reader.readAsText(error.response.data, "utf-8"); reader.onload = function (e) { const errorMsg = JSON.parse(reader.result).message; ElNotification.error({ title: errorMsg, duration: 5000, }); }; } else { let code = 0; try { code = error.response.data.status; } catch (e) { if (error.toString().indexOf("Error: timeout") !== -1) { ElNotification.error({ title: "网络请求超时", duration: 5000, }); return Promise.reject(error); } } console.log(code); if (code) { if (code === 401) { // store.dispatch("LogOut").then(() => { // // 用户登录界面提示 // Cookies.set("point", 401); // location.reload(); // }); } else if (code === 403) { router.push({ path: "/401" }); } else { const errorMsg = error.response.data.message; if (errorMsg !== undefined) { ElNotification.error({ title: errorMsg, duration: 5000, }); } } } else { ElNotification.error({ title: "接口请求失败", duration: 5000, }); } } return Promise.reject(error); } ); export default service;