axios.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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. config.headers = {}
  12. config.data = {}
  13. return config
  14. },
  15. (error: AxiosRequestConfig) => {
  16. Promise.reject(error)
  17. }
  18. )
  19. // 响应拦截器
  20. axiosInstance.interceptors.response.use(
  21. (res: AxiosResponse) => {
  22. const { code } = res.data as { code: number }
  23. if (code === ResultEnum.DATA_SUCCESS) return Promise.resolve(res.data)
  24. // 重定向
  25. if (ErrorPageNameMap.get(code)) redirectErrorPage(code)
  26. return Promise.resolve(res.data)
  27. },
  28. (err: AxiosResponse) => {
  29. const { code } = err.data as { code: number }
  30. if (ErrorPageNameMap.get(code)) redirectErrorPage(code)
  31. window['$message'].error('接口异常,请检查!')
  32. Promise.reject(err)
  33. }
  34. )
  35. export default axiosInstance