import axios from "axios"; import { getTokenKeySessionStorage } from "./auth"; import { useRouter } from "vue-router"; import { showToast } from "@/utils/toast"; // 请替换为你的Toast组件 // 创建axios实例 const service = axios.create({ // baseURL: process.env.VUE_APP_API_BASE_URL || 'http://localhost:8088', baseURL: process.env.VUE_APP_BASE_API, timeout: 15000, headers: { "Content-Type": "application/json", }, }); // 请求拦截器 service.interceptors.request.use( (config) => { // 从本地存储获取token const token = getTokenKeySessionStorage(); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }, (error) => { return Promise.reject(error); } ); // 响应拦截器 service.interceptors.response.use( (response) => { // 对响应数据做处理 return response.data; }, (error) => { const router = useRouter(); // 处理401未授权 if (error.response?.status === 401) { showToast("登录已过期,请重新登录", "error"); router.push("/login"); } // 处理其他错误状态码 if (error.response?.status === 500) { showToast("服务器错误,请稍后再试", "error"); } return Promise.reject(error); } ); export default service;