axios.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import axios from "axios";
  2. import { getToken } from "@/utils/storage/sessionToken";
  3. import { TOKEN } from "@/constant";
  4. import { loadingBar, message } from "@/plugin/naive-ui";
  5. // 显示消息
  6. const showMessage = (res) => {
  7. if (res.Code !== 200) {
  8. message.error(res.Msg);
  9. }
  10. };
  11. const service = axios.create({
  12. baseURL: import.meta.env.VITE_API_BASE_URL,
  13. timeout: 8000,
  14. });
  15. // 添加请求拦截器
  16. service.interceptors.request.use(
  17. function (config) {
  18. // 在发送请求之前做些什么
  19. loadingBar.start();
  20. const formData = new FormData();
  21. if (
  22. config.url !== "/Login_Admin_verification" &&
  23. config.url !== "/Login_verification"
  24. ) {
  25. const token = getToken();
  26. formData.append(TOKEN, token);
  27. }
  28. Object.entries(config.data).forEach(([key, value]) => {
  29. formData.append(key, value);
  30. });
  31. config.data = formData;
  32. return config;
  33. },
  34. function (error) {
  35. // 对请求错误做些什么
  36. return Promise.reject(error);
  37. }
  38. );
  39. // 添加响应拦截器
  40. service.interceptors.response.use(
  41. function (response) {
  42. // 2xx 范围内的状态码都会触发该函数。
  43. // 对响应数据做点什么
  44. const { data: res } = response;
  45. showMessage(res);
  46. loadingBar.finish();
  47. return response;
  48. },
  49. function (error) {
  50. // 超出 2xx 范围的状态码都会触发该函数。
  51. // 对响应错误做点什么
  52. return Promise.reject(error);
  53. }
  54. );
  55. export default service;