axios 封装

277 阅读1分钟

下面是记录一下自己的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);
        });
    });
}