request.js 796 Bytes
Newer Older
leiqingsong's avatar
leiqingsong committed
1 2 3 4 5 6
import axios from "axios";
import { Toast } from "vant";

let loading = null;

const service = axios.create({
7
  baseURL: "/shop-mall",
leiqingsong's avatar
leiqingsong committed
8
  timeout: 5000
9
});
leiqingsong's avatar
leiqingsong committed
10 11 12

service.interceptors.request.use(
  config => {
leiqingsong's avatar
leiqingsong committed
13
    const token = localStorage.getItem("token");
leiqingsong's avatar
leiqingsong committed
14
    config.headers["token"] = token;
15
    if (!config.loading) {
leiqingsong's avatar
leiqingsong committed
16 17 18 19 20 21 22 23 24
      loading = Toast.loading({
        forbidClick: true,
        message: "加载中..."
      });
    }
    return config;
  },
  error => {
    if (loading) Toast.clear();
leiqingsong's avatar
leiqingsong committed
25
    this.$toast.fail(error.response.data.error);
leiqingsong's avatar
leiqingsong committed
26
  }
27
);
leiqingsong's avatar
leiqingsong committed
28 29 30 31 32 33 34 35

service.interceptors.response.use(
  response => {
    if (loading) Toast.clear();
    const res = response.data;
    return res;
  },
  error => {
36
    if (loading) Toast.clear();
leiqingsong's avatar
leiqingsong committed
37
    return Promise.reject(error);
leiqingsong's avatar
leiqingsong committed
38
  }
39
);
leiqingsong's avatar
leiqingsong committed
40 41

export default service;