request.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { message } from 'ant-design-vue'
  2. import axios, { AxiosInstance, AxiosResponse } from 'axios'
  3. import { useRoute, useRouter } from 'vue-router'
  4. const instance = axios.create({
  5. baseURL: '',
  6. timeout: 10000
  7. })
  8. /**
  9. * 该函数捕获一个错误并返回一个被拒绝的承诺。
  10. * @param {any} error - `error` 参数是 `any` 类型,这意味着它可以是任何数据类型。它用作 `catchErr` 函数的输入参数。
  11. * @returns `catchErr` 函数返回一个被拒绝的 Promise,并传递了 `error` 参数作为拒绝的原因。
  12. */
  13. const catchErr = (response: AxiosResponse) => {
  14. const { data } = response
  15. if (data.code === 500) {
  16. message.error(data.msg)
  17. throw new Error('')
  18. } else if (data.code === 400) {
  19. message.error(data.msg)
  20. throw new Error('')
  21. }
  22. }
  23. instance.interceptors.request.use(config => {
  24. return config
  25. }, function (error) {
  26. return Promise.reject(error)
  27. })
  28. instance.interceptors.response.use(function (response) {
  29. catchErr(response)
  30. console.log(response.data)
  31. return response.data
  32. }, error => Promise.reject(error))
  33. export const setBaseUrl = (baseURL: string) => {
  34. instance.defaults.baseURL = baseURL
  35. }
  36. export default function request <T> (config: any) {
  37. return instance.request<AxiosInstance, SERVICE.Response<T>>(config)
  38. }