这样的需求,在主要功能完成后,需要进行交互效果的完善,需要给请求api的时候添加一个加载中的一个弹出框。但是每个页面每个页面过的话,会很费时间和精力,这里我们可以采用element-ui中的服务式弹出框设置
如下:
封装的api.js文件:
import axios from 'axios' import {Message,Loading} from 'element-ui' import router from '../router' // 请求拦截 axios.interceptors.request.use(config=> { Loading.service({text:"Loading..."}); return config; }, err=> { Message.error({message: '请求超时!'}); return Promise.resolve(err); }) // 响应拦截 axios.interceptors.response.use(res=> { Loading.service().close(); if (res.data.code == 200) { return res.data.result; } else if (res.data.code == 401) { router.push('/login') return Promise.reject(res); } return Promise.reject(res); }, err=> { Loading.service().close(); if (err.response.status == 504||err.response.status == 404) { Message.error({message: '服务器被吃了⊙﹏⊙∥'}); } else if (err.response.status == 403) { Message.error({message: '权限不足,请联系管理员!'}); } else { Message.error({message: '未知错误'}); } return Promise.reject(err); }) let base = ''; export const postRequest = (url, params) => { return axios({ method: 'post', url: `${base}${url}`, data: params, transformRequest: [function (data) { let ret = '' for (let it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' } loadingInstance.close(); return ret }], headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); } export const getRequest = (url,data='') => { return axios({ method: 'get', params: data, url: `${base}${url}` }); }
所有评论(0)