gm-2api / frontend /src /api /client.ts
yu
Add Dockerfile and code
4bcd925
import axios, { type AxiosInstance, type AxiosError } from 'axios'
// 创建 axios 实例
export const apiClient: AxiosInstance = axios.create({
baseURL: import.meta.env.VITE_API_URL || '',
timeout: 30000,
withCredentials: true, // 支持 cookie 认证
})
// 请求拦截器
apiClient.interceptors.request.use(
(config) => {
// 可以在这里添加 token 等认证信息
return config
},
(error) => {
return Promise.reject(error)
}
)
// 响应拦截器
apiClient.interceptors.response.use(
(response) => {
return response.data
},
async (error: AxiosError) => {
// 统一错误处理
if (error.response?.status === 401) {
const { useAuthStore } = await import('@/stores/auth')
const authStore = useAuthStore()
authStore.isLoggedIn = false
const router = await import('@/router')
router.default.push('/login')
}
const errorMessage = error.response?.data
? (error.response.data as any).detail || (error.response.data as any).message
: error.message
return Promise.reject(new Error(errorMessage || '请求失败'))
}
)
export default apiClient