import axios from 'axios'; import store from '@/store'; import { Toast } from 'vant'; // 根据环境不同引入不同api地址 import { baseApi } from '@/config'; // create an axios instance const service = axios.create({ baseURL: baseApi, // url = base api url + request url withCredentials: true, // send cookies when cross-domain requests timeout: 5000 // request timeout }); // request拦截器 request interceptor service.interceptors.request.use( config => { // 不传递默认开启loading if (!config.hideloading) { // loading Toast.loading({ forbidClick: true }); } if (store.getters.token) { config.headers['X-Token'] = ''; } return config; }, error => { // do something with request error console.log(error); // for debug return Promise.reject(error); } ); // respone拦截器 service.interceptors.response.use( response => { Toast.clear(); const res = response.data; if (res.status && res.status !== 200) { // 登录超时,重新登录 if (res.status === 401) { store.dispatch('FedLogOut').then(() => { location.reload(); }); } return Promise.reject(res || 'error'); } else { return Promise.resolve(res); } }, error => { Toast.clear(); console.log('err' + error); // for debug return Promise.reject(error); } ); export default service;