import axios from 'axios';
import config from '../../config/index'
const baseUrl = process.env.NODE_ENV === 'development' ? config.baseUrl.dev : config.baseUrl.pro
axios.interceptors.request.use(config => {
return config;
}, err => {
console.log('请求超时')
return Promise.resolve(err);
});
// http response 拦截器
axios.interceptors.response.use(response => {
const data = response.data;
switch (data.code) {
case 401:
// 未登录 清除已登录状态
console.log('异常:401')
break;
case 403:
console.log('异常:403')
break;
case 500:
// 错误
console.log('异常:500')
break;
default:
return data;
}
return data;
}, (err) => {
// 返回状态码不为200时候的错误处理
return Promise.resolve(err);
});
/**
*
* @param {*} method 请求方式
* @param {*} url 请求地址
* @param {*} params 参数
* @param {*} headers 头部
* @param {*} response 回调函数
*/
function httpRequest(method, url, params, headers, response) {
axios({
baseURL: baseUrl,
method: method,
url: url,
data: method === 'POST' || method === 'PUT' ? params : null,
// -- 对data请求数据解析,此举针对Java的spring,node不需要处理
transformRequest: [function (data) {
// -- 这里也可以通过来解析
// return Qs.stringify(data)
let ret = '';
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';
}
return ret;
}],
params: method === 'GET' || method === 'DELETE' ? params : null,
headers:headers
}).then(function (res) {
response(res);
}).catch(function (err) {
response(err);
})
}
export const $axios = {
get: function (url, params, headers, response) {
httpRequest('GET', url, params,headers, response)
},
post: function (url, params, headers, response) {
httpRequest('POST', url, params, headers, response)
},
put: function (url, params, headers, response) {
httpRequest('PUT', url, params, headers, response)
},
delete: function (url, params, headers, response) {
httpRequest('DELETE', url, params, headers, response)
}
}
看了一些文章总结了下