| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import axios from 'axios'
- import type { TripFormData, TripPlanResponse } from '@/types'
- const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:8000'
- const apiClient = axios.create({
- baseURL: API_BASE_URL,
- timeout: 120000, // 2分钟超时
- headers: {
- 'Content-Type': 'application/json'
- }
- })
- // 请求拦截器
- apiClient.interceptors.request.use(
- (config) => {
- console.log('发送请求:', config.method?.toUpperCase(), config.url)
- return config
- },
- (error) => {
- console.error('请求错误:', error)
- return Promise.reject(error)
- }
- )
- // 响应拦截器
- apiClient.interceptors.response.use(
- (response) => {
- console.log('收到响应:', response.status, response.config.url)
- return response
- },
- (error) => {
- console.error('响应错误:', error.response?.status, error.message)
- return Promise.reject(error)
- }
- )
- /**
- * 生成旅行计划
- */
- export async function generateTripPlan(formData: TripFormData): Promise<TripPlanResponse> {
- try {
- const response = await apiClient.post<TripPlanResponse>('/api/trip/plan', formData)
- return response.data
- } catch (error: any) {
- console.error('生成旅行计划失败:', error)
- throw new Error(error.response?.data?.detail || error.message || '生成旅行计划失败')
- }
- }
- /**
- * 健康检查
- */
- export async function healthCheck(): Promise<any> {
- try {
- const response = await apiClient.get('/health')
- return response.data
- } catch (error: any) {
- console.error('健康检查失败:', error)
- throw new Error(error.message || '健康检查失败')
- }
- }
- export default apiClient
|