client.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import axios from 'axios'
  2. /**
  3. * baseURL 解析优先级:
  4. * 1. URL 参数 apiBase (admin 跳转过来时携带, 自动携带当前 admin 域名,
  5. * 支持一份 React 部署服务多套环境 test/pre/prod)
  6. * 2. 构建时环境变量 VITE_API_BASE_URL (兜底, 直接访问 React URL 时用)
  7. * 3. 开发默认 /videoVector (走 Vite proxy 直连本地 video-vector)
  8. */
  9. function resolveBaseURL(): string {
  10. const urlApiBase = new URLSearchParams(window.location.search).get('apiBase')
  11. if (urlApiBase) return urlApiBase
  12. return import.meta.env.VITE_API_BASE_URL ?? '/videoVector'
  13. }
  14. const baseURL = resolveBaseURL()
  15. const client = axios.create({
  16. baseURL,
  17. timeout: 60_000,
  18. withCredentials: true, // 跨域请求自动携带 admin Cookie(用于 manager-new Session 鉴权)
  19. headers: {
  20. 'Content-Type': 'application/json',
  21. },
  22. })
  23. // 简易错误日志(MVP 不做复杂全局拦截)
  24. client.interceptors.response.use(
  25. (resp) => resp,
  26. (err) => {
  27. console.error('[API ERROR]', err?.message, err?.response?.data)
  28. return Promise.reject(err)
  29. },
  30. )
  31. export default client