request.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import axios from "axios";
  2. import router from '@/router'
  3. import {getToken} from "@/common/utils/auth.js";
  4. import {ElLoading} from "element-plus";
  5. let loading;
  6. const startLoading = ()=>{
  7. const options = {
  8. lock: true,
  9. text: "加载中...",
  10. background: "rgba(0,0,0,0.7)"
  11. }
  12. loading = ElLoading.service(options)
  13. }
  14. const endLoading = ()=>{
  15. loading.close()
  16. }
  17. axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
  18. const request = axios.create({
  19. baseURL: '/api',
  20. timeout: 10000
  21. });
  22. //请求拦截器
  23. request.interceptors.request.use(config =>{
  24. startLoading();
  25. //添加token
  26. let token = getToken();
  27. config.headers['token'] = token?token+'':'';
  28. return config;
  29. });
  30. //响应拦截器
  31. request.interceptors.response.use(response =>{
  32. endLoading();
  33. let res = response.data;
  34. if (res.code === 401){
  35. // location.reload();
  36. router.push('/index');
  37. }
  38. //如果是文件就直接返回
  39. if(response.config.responseType === 'blob')return res;
  40. //如果是字符串就转换为json对象
  41. if(typeof res === 'string'){
  42. res = res?JSON.parse(res):res;
  43. }
  44. return res;
  45. });
  46. export default request;