残缺代码
import axios from 'axios'
import QS from 'qs'
import store from '../store'
import router from '../router'
import { Message } from 'element-ui'
// 申请域名
axios.defaults.baseURL = process.env.VUE_APP_API_URL;
// 申请超时工夫
axios.defaults.timeout = 10000;
// post申请头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
// 申请拦截器
axios.interceptors.request.use(
config => { // 每次发送申请之前判断是否存在token,如果存在,则对立在http申请的header都加上token,不必每次申请都手动增加了 // 即便本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断 const token = store.state.token; token && (config.headers[store.state.tokenName] = token); return config; }, error => { return Promise.error(error); })
// 响应拦截器
axios.interceptors.response.use(
response => { if (response.status === 200) { return Promise.resolve(response); } else { return Promise.reject(response); } },// 服务器状态码不是200的状况 error => { if (error.response.status) { switch (error.response.status) { // 404申请不存在 case 404: Message({ showClose: true, message: '网络申请不存在', type: 'error' }) break; case 500: Message({ showClose: true, message: error.response.data.message ? error.response.data.message : '服务端谬误', type: 'error' }) break; // 其余谬误,间接抛出谬误提醒 default: Message({ showClose: true, message: response.data.msg, type: 'error' }) } return Promise.reject(error.response); } }
);
/**
- get办法,对应get申请
- @param {String} url [申请的url地址]
- @param {Object} params [申请时携带的参数]
*/
// 申请,并对申请办法进行判断
export default function request(api, params = {}) {
/* 这里应用api的method辨别申请形式 api写法如下,可自行调整 Login: { url: '/login', methods: 'post' }*/if(api.methods == 'post') { return new Promise((resolve, reject) => { axios.post(api.url, QS.stringify(params)) .then(res => { if(!res.data.success) { Message({ showClose: true, message: res.data.msg, type: 'error' }) } else { resolve(res.data); } }) .catch(err => { reject(err.data) }) });} else if(api.methods == 'get') { return new Promise((resolve, reject) =>{ axios.get(api.url, { params: params }) .then(res => { if(!res.data.success) { Message({ showClose: true, message: res.data.msg, type: 'error' }) } else { resolve(res.data); } }) .catch(err => { reject(err.data) }) });}
}