| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import axios, { type AxiosRequestConfig, type AxiosResponse, isAxiosError } from "axios";
- import router from '@/router'; // 引入Vue Router实例
- import { useTokenStore } from '@/stores/mytoken'; // 引入Pinia store
- // 创建 axios 实例
- const request = axios.create({
- baseURL: import.meta.env.VITE_API_URL, // 使用环境变量配置的API URL
- timeout: 10000,
- headers: {
- 'Content-Type': 'application/json',
- },
- });
- // 请求拦截器
- request.interceptors.request.use(
- (config) => {
- if (!config.headers) {
- config.headers = {} as any; // 强制转换以避免类型不匹配的问题
- }
- console.log('Starting Request', config); // 调试信息
- return config; // 记得返回配置
- },
- (error) => {
- console.error('Request error:', error);
- return Promise.reject(error);
- }
- );
- // 响应拦截器(可选)
- request.interceptors.response.use(
- (response: AxiosResponse) => response,
- async (error) => {
- if (isAxiosError(error)) {
- console.error('Response error:', error.message);
- if (error.response && error.response.status === 401) {
- // 如果是401未授权错误,则清除token并重定向到登录页
- const tokenStore = useTokenStore();
- tokenStore.clearToken(); // 清除token信息
- router.push('/login'); // 重定向到登录页面
- }
- }
- return Promise.reject(error);
- }
- );
- console.log('Base URL:', request.defaults.baseURL); // 打印检查
- export default request;
|