import axios from 'axios'
import config from '../config'

// 创建axios实例
const apiClient = axios.create({
  baseURL: config.apiBaseUrl,
  timeout: 10000, // 超时时间10秒
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
})

// 请求拦截器 - 可以在这里添加认证令牌等
apiClient.interceptors.request.use(
  config => {
    // 在发送请求前做些什么
    return config
  },
  error => {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 响应拦截器 - 统一处理错误
apiClient.interceptors.response.use(
  response => {
    // 对响应数据做些什么
    return response
  },
  error => {
    // 对响应错误做些什么
    console.error('API请求失败:', error)
    return Promise.reject(error)
  }
)

// API服务对象
const apiService = {
  // 获取区域列表
  getRegions: async () => {
    try {
      const response = await apiClient.get('/api/regions')
      return response.data
    } catch (error) {
      console.error('获取区域列表失败:', error)
      throw error
    }
  },
  
  // 获取实例类型列表
  getInstanceTypes: async () => {
    try {
      const response = await apiClient.get('/api/instance-types')
      return response.data
    } catch (error) {
      console.error('获取实例类型列表失败:', error)
      throw error
    }
  },
  
  // 搜索实例
  searchInstances: async (params) => {
    try {
      const response = await apiClient.post('/api/search-instances-v2', params)
      return response.data
    } catch (error) {
      console.error('搜索实例失败:', error)
      throw error
    }
  },
  
  // 计算价格
  calculatePrice: async (params) => {
    try {
      const response = await apiClient.post('/api/calculate-price', params)
      return response.data
    } catch (error) {
      console.error('计算价格失败:', error)
      throw error
    }
  },
  
  // 比较价格
  comparePrices: async (params) => {
    try {
      const response = await apiClient.post('/api/compare-prices', params)
      return response.data
    } catch (error) {
      console.error('比较价格失败:', error)
      throw error
    }
  },
  
  // 获取预算估算
  getBudgetEstimate: async (params) => {
    try {
      const response = await apiClient.post('/api/budget', params)
      return response.data
    } catch (error) {
      console.error('获取预算估算失败:', error)
      throw error
    }
  }
}

export default apiService 