import axios from 'axios';
import qs from 'qs';
axios.defaults.timeout = 1000 * 10;
axios.defaults.headers.post['Content-type'] = 'application/json;charset=UTF-8';
const env = process.env.NODE_ENV;
const envConfig = {
development: '172.0.0.1',
dubug: '172.0.0.2',
production: '172.0.0.3'
};
axios.defaults.baseURL = envConfig[env];
axios.interceptors.request.use(
config => {
config.headers.Authorization = 'XXXXXXXX';
return config;
},
error => {
return Promise.error(error);
}
);
axios.interceptors.response.use(
response => {
return response.status === 200 ? Promise.resolve(response) : Promise.reject(response));
},
error => {
if (error.response && error.response.status) {
switch (error.response.status) {
case 400:
error.message = '错误请求';
break;
case 401:
error.message = '未授权,请重新登录';
break;
case 403:
error.message = '拒绝访问';
break;
case 404:
error.message = '请求错误,未找到该资源';
break;
case 405:
error.message = '请求方法未允许';
break;
case 408:
error.message = '请求超时';
break;
case 500:
error.message = '服务器端出错';
break;
case 501:
error.message = '网络未实现';
break;
case 502:
error.message = '网络错误';
break;
case 503:
error.message = '服务不可用';
break;
case 504:
error.message = '网络超时';
break;
case 505:
error.message = 'http版本不支持该请求';
break;
default:
error.message = `连接错误${error.response.status}`;
}
}
return Promise.reject(error);
}
);
function commonRequest(url, params, type, config) {
return new Promise((resolve, reject) => {
axios[type](url, qs.stringify(params), config).then(
res => {
resolve(res.data);
},
err => {
reject(err);
}
);
});
}
export default {
get(url, params, config) {
return new Promise((resolve, reject) => {
config = config || {};
config.params = params;
axios.get(url, config).then(
res => {
resolve(res.data);
},
err => {
reject(err);
}
);
});
},
post(url, params, config) {
return commonRequest(url, params, 'post', config);
},
put(url, params, config) {
return commonRequest(url, params, 'put', config);
},
delete(url, params, config) {
return new Promise((resolve, reject) => {
config = config || {};
config.params = params;
axios.delete(url, config).then(
res => {
resolve(res.data);
},
err => {
reject(err);
}
);
});
},
patch(url, params, config) {
return commonRequest(url, params, 'patch', config);
}
};
参考链接:vue中Axios的封装和API接口的管理(更新)