request.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import axios from "axios";
  2. import { ElMessage } from "element-plus";
  3. // @ts-ignore 进度条
  4. import NProgress from "nprogress";
  5. import "nprogress/nprogress.css";
  6. //引入用户相关的仓库
  7. // import useUserStore from '@/store/modules/user'
  8. //创建axios实例
  9. let request = axios.create({
  10. // baseURL: import.meta.env.VITE_APP_BASE_API,
  11. timeout: 15000,
  12. });
  13. //请求拦截器
  14. request.interceptors.request.use((config) => {
  15. NProgress.start();
  16. // 判断接口公共路径
  17. if (config.headers.type === "video") {
  18. config.baseURL = import.meta.env.VITE_APP_BASE_API_VIDEO;
  19. } else {
  20. config.baseURL = import.meta.env.VITE_APP_BASE_API;
  21. }
  22. let token = sessionStorage.getItem("WANZAI-TOKEN");
  23. if (token) {
  24. config.headers.token = token;
  25. config.headers.user_head = 1;
  26. }
  27. //获取用户相关的小仓库:获取仓库内部token,登录成功以后携带给服务器
  28. // const userStore = useUserStore()
  29. // if (userStore.token) {
  30. // config.headers.token = userStore.token
  31. // }
  32. //config配置对象,headers属性请求头,经常给服务器端携带公共参数
  33. //返回配置对象
  34. return config;
  35. });
  36. //响应拦截器
  37. request.interceptors.response.use(
  38. (response) => {
  39. NProgress.done();
  40. return response.data;
  41. },
  42. (error) => {
  43. // console.log(error);
  44. //处理网络错误
  45. let msg = "";
  46. let status = error.response.status || "";
  47. switch (status) {
  48. case 401:
  49. msg = "token过期";
  50. break;
  51. case 403:
  52. msg = "无权访问";
  53. break;
  54. case 404:
  55. msg = "请求地址错误";
  56. break;
  57. case 500:
  58. msg = "服务器出现问题";
  59. return;
  60. break;
  61. default:
  62. msg = "无网络";
  63. }
  64. ElMessage({
  65. type: "error",
  66. message: msg,
  67. });
  68. return Promise.reject(error);
  69. }
  70. );
  71. export default request;