http.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import axios from "axios";
  2. import history from "./history";
  3. import { getTokenInfo, removeTokenInfo } from "./storage";
  4. import { message } from "antd";
  5. // 请求基地址
  6. export const baseURL =
  7. // 线下的图片地址需要加上/api/
  8. process.env.NODE_ENV === "development"
  9. ? "http://192.168.20.55:8038/api/"
  10. : "";
  11. // process.env.NODE_ENV === "development" ? "http://192.168.20.55:8038" : "";
  12. // 创建 axios 实例
  13. const http = axios.create({
  14. // 线下的地址不用加/api/
  15. baseURL: baseURL,
  16. // baseURL: baseURL + "/api/",
  17. timeout: 5000,
  18. });
  19. let axajInd = 0;
  20. const lodingDom: any = document.querySelector("#AsyncSpinLoding");
  21. // 请求拦截器
  22. http.interceptors.request.use(
  23. function (config: any) {
  24. // 发请求前打开加载提示
  25. lodingDom.style.opacity = 1;
  26. lodingDom.style.pointerEvents = "auto";
  27. axajInd++;
  28. const { token } = getTokenInfo();
  29. if (token) config.headers.token = token;
  30. return config;
  31. },
  32. function (err) {
  33. return Promise.reject(err);
  34. }
  35. );
  36. // 响应拦截器
  37. http.interceptors.response.use(
  38. function (response) {
  39. // 请求回来的关闭加载提示
  40. axajInd--;
  41. if (axajInd === 0) {
  42. // setTimeout(() => {
  43. lodingDom.style.opacity = 0;
  44. lodingDom.style.pointerEvents = "none";
  45. // }, 100);
  46. }
  47. if (response.data.code === 5001 || response.data.code === 5002) {
  48. removeTokenInfo();
  49. message.warning("登录失效!");
  50. history.push("/login");
  51. } else if (response.data.code === 0) {
  52. // message.success(response.data.msg);
  53. } else message.warning(response.data.msg);
  54. return response.data;
  55. },
  56. async function (err) {
  57. axajInd = 0;
  58. setTimeout(() => {
  59. lodingDom.style.opacity = 0;
  60. lodingDom.style.pointerEvents = "none";
  61. }, 300);
  62. // 如果因为网络原因,response没有,给提示消息
  63. if (!err.response) {
  64. message.warning("网络繁忙,请稍后重试!");
  65. } else {
  66. message.warning("错误!");
  67. }
  68. return Promise.reject(err);
  69. }
  70. );
  71. // 导出 axios 实例
  72. export default http;