axios.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 getBaseUrl = () => {
  10. switch (process.env.NODE_ENV) {
  11. case 'development':
  12. return 'http://localhost:4000/api';
  13. case 'production':
  14. return process.env.baseURL || process.env.apiUrl || '';
  15. default:
  16. return process.env.baseURL || process.env.apiUrl || '';
  17. }
  18. };
  19. const config = {
  20. baseURL: getBaseUrl(),
  21. // timeout: 60 * 1000, // Timeout
  22. // withCredentials: true, // Check cross-site Access-Control
  23. };
  24. const _axios = axios.create(config);
  25. _axios.interceptors.request.use(
  26. (config) => {
  27. config.headers.Authorization = localStorage.getItem('token');
  28. return config;
  29. },
  30. (error) =>
  31. // Do something with request error
  32. Promise.reject(error),
  33. );
  34. // Add a response interceptor
  35. _axios.interceptors.response.use(
  36. (response) => {
  37. if (response.data.code === 10110) {
  38. destroyToken();
  39. return;
  40. }
  41. return response.data.data;
  42. },
  43. (error) =>
  44. // Do something with response error
  45. Promise.reject(error),
  46. );
  47. export default _axios;