axios.ts 1023 B

1234567891011121314151617181920212223242526272829303132333435
  1. import axios, { AxiosResponse, AxiosRequestConfig } from 'axios'
  2. import { ResultEnum } from "@/enums/httpEnum"
  3. import { ErrorPageNameMap } from "@/enums/pageEnum"
  4. import { redirectErrorPage } from '@/utils'
  5. const axiosInstance = axios.create({
  6. baseURL: import.meta.env.DEV ? import.meta.env.VITE_DEV_PATH : import.meta.env.VITE_PRO_PATH,
  7. timeout: ResultEnum.TIMEOUT,
  8. })
  9. axiosInstance.interceptors.request.use(
  10. (config: AxiosRequestConfig) => {
  11. return config
  12. },
  13. (error: AxiosRequestConfig) => {
  14. Promise.reject(error)
  15. }
  16. )
  17. // 响应拦截器
  18. axiosInstance.interceptors.response.use(
  19. (res: AxiosResponse) => {
  20. const { code } = res.data as { code: number }
  21. if (code === ResultEnum.DATA_SUCCESS) return Promise.resolve(res.data)
  22. // 重定向
  23. if (ErrorPageNameMap.get(code)) redirectErrorPage(code)
  24. return Promise.resolve(res.data)
  25. },
  26. (err: AxiosResponse) => {
  27. window['$message'].error('接口异常,请检查!')
  28. Promise.reject(err)
  29. }
  30. )
  31. export default axiosInstance