axios.ts 1.4 KB

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