import axios from 'axios'; import { Message } from '@arco-design/web-vue'; import { useUserStore } from '../store/userInfo' import {globals} from '../main.js' // create an axios instance console.log("________"+import.meta.env.VITE_BASE_URL) const service = axios.create({ baseURL:import.meta.env.VITE_BASE_URL, timeout: 8000, headers:{ 'Content-Type':'application/json', } }); // request interceptor service.interceptors.request.use( (config) => { // Store 必须在拦截器内部导入,在外部导入会显示 Pinia 未初始化 const store = useUserStore(); // 设置请求头部 Authorization // if(config.method=="put"){ // config.headers['Content-Type'] = 'application/x-www-form-urlencoded' // } if (store.token) { config.headers['Authorization'] = 'Bearer ' + store.token; //config.headers['Content-Type'] = 'multipart/form-data' } return config; }, (error) => { console.error(error); return Promise.reject(error); } ); // response interceptor service.interceptors.response.use( (response) => { var Authorization_token = response.headers.Authorization; if (Authorization_token) { sessionStorage.setItem('token', Authorization_token); //当token快过期时,服务器会返回新token,本地刷新 } const store = useUserStore(); const { code, message } = response.data; console.log(code); if (code == 401 || code==405 || code==406) { //Message.clear(); // Message.error({ // content: message, // duration: 3000 // }); // 重定向路由到登陆页面 store.clearInfo(); window.location.href="/login"; }else if(code === 400){ Message.error({ content: '缺少参数', duration: 3000 }); }else if(code == 402 || code==403){ Message.error({ content: '请求无权限', duration: 3000 }); }else if(code == 201){ Message.error({ content: message, duration: 3000 }); }else if(code==-1){ Message.clear(); Message.error({ content: message, duration: 3000 }); } return response.data; }, (error) => { const store = useUserStore(); const { code, message } = error.response.data; // 如果过期则退出登录 if (code === 401 || code==405 || code==406) { Message.error({ content: message, duration: 3000 }); // 重定向路由到登陆页面 store.clearInfo(); window.location.href="/login"; }else if(code === 400){ Message.error({ content: '缺少参数', duration: 3000 }); }else if(code === 402 || code==403){ Message.error({ content: '请求无权限', duration: 3000 }); }else if(code === 201){ Message.error({ content: message, duration: 3000 }); store.clearInfo(); window.location.href="/login"; }else { Message.error({ content: error.message, duration: 3000 }) } globals?.$loading.hide(); return Promise.reject(message); } ); export default service;