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: 1000,
    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;