import axios from "axios"; import { useRoute } from "vue-router"; const route = useRoute(); axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8"; const service = axios.create({ baseURL: import.meta.env.VITE_BASE_API_URL, timeout: 15000, }); /** * 自定义状态码处理 * @param {*} status 状态码 * @param {*} info 信息 */ const errorHandle = (status, info) => { switch (status) { case 400: console.log("语义有误"); break; case 401: console.log("服务器认证失败"); route.replace('/login'); break; case 403: console.log("服务器拒绝访问"); route.replace('/login'); break; case 404: console.log("地址错误"); break; case 500: console.log("服务器遇到意外"); break; case 502: console.log("服务器无响应"); break; default: console.log(info); break; } }; // request拦截器 service.interceptors.request.use( (config) => { // const token = localStorage.getItem('authToken'); // if (token) { // config.headers['Authorization'] = `Bearer ${token}`; // } return config; }, (error) => { // 返回Promise.reject(error),这样会触发后续的错误处理器 Promise.reject(error); }, ); // response拦截器 service.interceptors.response.use( (response) => { if (response.status === 200 && response.data.code === 200) return Promise.resolve(response.data); else return Promise.reject(response.data); }, (error) => { const { response } = error; errorHandle(response.status, response.info); return Promise.reject(error); }, ); export default service;