axios.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /* eslint-disable */
  2. import axios from 'axios';
  3. import { TokenDispatcher } from '@/store/dispatchers';
  4. const { destroyToken } = TokenDispatcher;
  5. // Full config: https://github.com/axios/axios#request-config
  6. // axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || '';
  7. // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
  8. // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
  9. const config = {
  10. baseURL: process.env.VUE_APP_API_URL,
  11. // timeout: 60 * 1000, // Timeout
  12. // withCredentials: true, // Check cross-site Access-Control
  13. };
  14. const _axios = axios.create(config);
  15. _axios.interceptors.request.use(
  16. (config) => {
  17. config.headers.Authorization = localStorage.getItem('token');
  18. return config;
  19. },
  20. (error) =>
  21. // Do something with request error
  22. Promise.reject(error),
  23. );
  24. // Add a response interceptor
  25. _axios.interceptors.response.use(
  26. (response) => {
  27. if (response.status === 403) {
  28. destroyToken();
  29. window.location.href = '/';
  30. return;
  31. }
  32. return response.data.data;
  33. },
  34. (error) =>
  35. // Do something with response error
  36. Promise.reject(error),
  37. );
  38. export default _axios;