request.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import axios, { AxiosRequestHeaders } from 'axios';
  2. import qs from 'qs';
  3. const defaultConfig = {
  4. baseURL: import.meta.env.VITE_BASE_URL
  5. };
  6. const instance = axios.create(Object.assign({}, defaultConfig));
  7. instance.interceptors.request.use(
  8. (config) => {
  9. ('isAuth' in config.headers) ? null : config.headers.isAuth = true
  10. if (config.headers.isAuth) {
  11. config.headers.Authorization = `Bearer ${import.meta.env.VITE_AUTHORIZATION}`;
  12. }
  13. const data = config.data || false
  14. if (
  15. config.method?.toUpperCase() === 'POST' &&
  16. (config.headers as AxiosRequestHeaders)['Content-Type'] ===
  17. 'application/x-www-form-urlencoded'
  18. ) {
  19. config.data = qs.stringify(data)
  20. }
  21. return config;
  22. },
  23. (error) => {
  24. return Promise.reject(error);
  25. }
  26. );
  27. instance.interceptors.response.use(
  28. (response) => {
  29. if (response.data) {
  30. return response.data;
  31. }
  32. return response;
  33. },
  34. (error) => {
  35. return Promise.reject(error);
  36. }
  37. );
  38. export default instance;