22 lines
701 B
TypeScript
22 lines
701 B
TypeScript
import axios, { type AxiosInstance } from 'axios'
|
||
import { setupInterceptors } from './interceptors'
|
||
|
||
// HTTP Client(Axios instance)
|
||
//
|
||
// 設計重點:
|
||
// - 透過單一 axios instance 統一管理 baseURL、timeout、headers 與攔截器
|
||
// - 預設 baseURL 使用 `/api`:搭配 Vite proxy 轉送到後端 dev server
|
||
// - 攔截器集中在 `interceptors.ts`,避免 client.ts 變得難維護
|
||
function createClient(): AxiosInstance {
|
||
const baseURL = import.meta.env.VITE_API_BASE_URL || '/service/api'
|
||
const client = axios.create({
|
||
baseURL,
|
||
timeout: 10_000,
|
||
withCredentials: true,
|
||
})
|
||
setupInterceptors(client)
|
||
return client
|
||
}
|
||
|
||
export const httpClient = createClient()
|