import axios from 'axios';

// 创建axios实例
const service = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL,
  timeout: 10000,
  withCredentials: false // JWT 不需要 Cookie
});
 
// 请求拦截器
service.interceptors.request.use(
  config => {
    const token = localStorage.getItem('token');
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`;
    }
    
    // 禁止 GET 请求缓存：添加时间戳参数到 query string
    if (config.method === 'get') {
      config.params = {
        ...config.params,
        _t: Date.now()
      };
    }
    
    // POST/PUT/PATCH 请求也添加时间戳到 query string 防止缓存
    if (['post', 'put', 'patch'].includes(config.method?.toLowerCase())) {
      config.params = {
        ...config.params,
        _t: Date.now()
      };
    }
    
    // 对于有 body 的请求（POST、PUT、PATCH），确保设置 Content-Type
    if (config.data && ['post', 'put', 'patch'].includes(config.method?.toLowerCase())) {
      if (!config.headers['Content-Type'] && !config.headers['content-type']) {
        config.headers['Content-Type'] = 'application/json';
      }
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);
 
// 响应拦截器
service.interceptors.response.use(
  response => {
    return response.data;
  },
  error => {
    if (error.response) {
      switch (error.response.status) {
        case 401:
          // 处理未授权的错误 - 清除token并跳转登录页
          console.error('未授权，请重新登录');
          localStorage.removeItem('token');
          // 避免循环导入，直接使用路由
          if (window.location.hash !== '#/login') {
            window.location.href = '#/login';
          }
          break;
        case 404:
          // 处理资源不存在的错误
          console.error('请求的资源不存在');
          break;
        default:
          console.error('请求失败，请稍后再试');
      }
    } else if (error.request) {
      console.error('请求失败，请检查网络连接');
    } else {
      console.error('请求配置错误');
    }
    return Promise.reject(error);
  }
);
 
export default service;