下面是记录一下自己的axios的封装代码,把get和POST都封装了一下,如下所示, 把get和POST方法都暴露出去
import axios from 'axios';
import qs from 'qs';
const service = axios.create({
timeout: 30000,
});
// request 拦截器
service.interceptors.request.use((config) => {
// 在这里写一些request之前的操作
return config;
}, (error) => {
console.log('request:', error);
Promise.reject(error);
});
// response 拦截器
service.interceptors.response.use((response) => {
const status = response.status;
console.log('status:', status);
return response;
}, (error) => {
console.log('请求失败:', error);
Promise.reject(error);
});
export function get (url, params) {
params = Object.assign({}, params, {
f: window.pageData.f,
v: window.pageData.v,
timesort: new Date().getTime()
});
return new Promise((resolve, reject) => {
service({
method: 'get',
url,
params,
responseType: 'json'
}).then(res => {
resolve(res.data);
}).catch(err => {
reject(err);
});
});
}
export function post (url, params) {
params = params ? params : {};
if (!(params instanceof FormData)) {
params = qs.stringify(params);
}
return new Promise((resolve, reject) => {
service({
method: 'post',
url,
data: params,
withCredentials: true,
config: { headers: { 'content-type': 'application/x-www-form-urlencoded' } }
}).then(res => {
resolve(res.data);
}).catch(err => {
reject(err);
});
});
}