import axios from 'axios' import router from '@/router' import { Toast } from 'vant' import {showLoading,hideLoading} from './loading' // 根据环境不同引入不同api地址 import { baseApi } from '@/config' // create an axios instance const service = axios.create({ baseURL: baseApi, // url = base api url + request url // baseURL: 'http://10.87.10.55:8080', // url = base api url + request url withCredentials: false, // send cookies when cross-domain requests timeout: 15000 // request timeout }) let loading; // request拦截器 service.interceptors.request.use( config => { // 不传递默认开启loading if (!config.hideLoading) { // loading // loading = Toast.loading({ // duration: 0, // 持续展示 toast // forbidClick: true // }) showLoading() // loading = Loading.service({ // lock: true, // background: 'rgba(0, 0, 0, 0.5)' // }) } const token = sessionStorage.getItem('access_token'); if (token) { config.headers['Authorization'] = 'Bearer ' + token; } return config }, error => { // do something with request error console.log(error) // for debug return Promise.reject(error) } ) let success = response => { //loading.close(); setTimeout(()=>{ hideLoading()},200) // 二进制数据则直接返回 if (response.request.responseType === 'blob' || response.request.responseType === 'arraybuffer') { return response.data } let res = response.data; if(res.code === 200){ return res; } if (res.code === 401) { Toast.fail(res.msg); sessionStorage.clear(); router.push('/login'); return Promise.reject(res.msg); } if (res.code === 500) { Toast.fail({ message: res.msg, position: 'top' }); return Promise.reject(res.msg); } Toast.fail(res.msg); return Promise.reject(res.msg); } let error = error => { hideLoading() //loading.close(); console.log('err' + error) Toast.fail('请求异常,请稍后重试'); return Promise.reject(error) } // respone拦截器 service.interceptors.response.use(success,error); export default service