axios的封装
create实例,调用get或post方法,可通过interceptor设置对请求和响应的过滤
适用于小项目:
import axios from 'axios'
// 抛出错误
function errorLog(err) {
const err = new Error(msg);
throw err;
}
//固定的URL
let serverURL = 'https://www.lxq/request'
// 创建一个 axios 实例
const service = axios.create({
baseURL: serverURL,
timeout: 300000 // 请求超时时间
});
service.interceptors.request.use(
config => {
if (config.headers.pageType && config.headers.pageType === 'upload') {
config.baseURL = 'https://www.ll./office/'
return config
}
return config
},
error => {
console.log(error);
Promise.reject(error)
}
);
// 响应拦截器
service.interceptors.response.use(
response => {
if (response.config.headers.RequestName) {
return response;
}
// 状态码与后台约定
const dataAxios = response.data;
const {
code
} = dataAxios;
// 根据 code 进行判断
if (code === undefined) {
return dataAxios
} else {
switch (code) {
case 0:
// [ 示例 ] code === 0 代表没有错误
return dataAxios.data;
case '1':
//
return dataAxios;
default:
if (!dataAxios.message) {
errorCreat(`${dataAxios.msg}`)
} else {
errorCreat(`${dataAxios.message}`)
}
break
}
}
},
error => {
if (error && error.response) {
switch (error.response.status) {
case 400:
error.message = '请求错误';
break;
case 401:
error.message = '未授权,请登录';
break;
case 403:
error.message = '拒绝访问';
break;
case 404:
error.message = `404`;
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:
break
}
}
return Promise.reject(error)
}
);
export default service