request.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import axios from 'axios';
  2. import qs from 'qs';
  3. import NProgress from 'nprogress'; //页面顶部加载进度条
  4. import 'nprogress/nprogress.css';
  5. import {
  6. ElNotification,
  7. ElMessageBox,
  8. ElMessage,
  9. ElLoading
  10. } from 'element-plus';
  11. //此处注释store
  12. // import store from '@/store';
  13. import cache from '@/utils/cache';
  14. // axios实例
  15. const request = axios.create({
  16. // axios中请求配置有baseURL选项,表示请求URL公共部分
  17. baseURL: import.meta.env.VITE_API_URL,
  18. // 超时
  19. timeout: 60000,
  20. headers: {
  21. 'Content-Type': 'application/json; charset=utf-8'
  22. }
  23. });
  24. NProgress.configure({
  25. showSpinner: true
  26. });
  27. // 请求拦截器
  28. request.interceptors.request.use(
  29. (config) => {
  30. // const userStore = store.userStore
  31. // if (userStore?.token) {
  32. // config.headers.Authorization = userStore.token
  33. // }
  34. // 追加时间戳,防止GET请求缓存
  35. if (config.method?.toUpperCase() === 'GET') {
  36. config.params = {
  37. ...config.params,
  38. t: new Date().getTime()
  39. }
  40. }
  41. if (Object.values(config.headers).includes('application/x-www-form-urlencoded')) {
  42. config.data = qs.stringify(config.data)
  43. }
  44. return config
  45. },
  46. error => {
  47. return Promise.reject(error)
  48. }
  49. )
  50. // 响应拦截器
  51. request.interceptors.response.use(
  52. (response) => {
  53. if (response.status !== 200) {
  54. return Promise.reject(new Error(response.statusText || 'Error'));
  55. }
  56. // console.log('输出结果', response)
  57. const res = response.data;
  58. // 响应成功
  59. if (res.success == true) {
  60. return res;
  61. }
  62. // 错误提示
  63. ElMessage.error(res.message);
  64. // 没有权限,如:未登录、登录过期等,需要跳转到登录页
  65. // if (res.code === 401) {
  66. // store.userStore?.setToken('')
  67. // location.reload();
  68. // }
  69. return Promise.reject(new Error(res.msg || 'Error'));
  70. },
  71. async (error) => {
  72. NProgress.done();
  73. if (error.response) {
  74. const {
  75. status,
  76. config
  77. } = error.response;
  78. }
  79. return Promise.reject({
  80. message: error.message
  81. });
  82. }
  83. );
  84. // 导出 axios 实例
  85. export default request