美文网首页
axios封装使用

axios封装使用

作者: 我爱张智容 | 来源:发表于2020-08-31 20:53 被阅读0次

1、安装

npm install axios 

2、封装
request.js

import axios from 'axios'

/**
 * 最好的封装方式  Promise
 * @param config
 * @returns {Promise<unknown>}
 */
export function request(config) {
    return new Promise((resolve, reject) => {

        const instance = axios.create({
            baseUrl: config.baseUrl,
            timeout: 5000
        });

        instance(config)
            .then(res => {
                resolve(res)
            })
            .catch(err => {
                reject(err)
            });
    });
}

/**
 * 最后优化后的方案
 * @param config
 * @returns {Promise<unknown>}
 */
export function request1(config) {

    const instance = axios.create({
        baseUrl: config.baseUrl,
        timeout: 5000
    });

    return instance(config);
}

/**
 * 调用写法
 */
/*
request({
    baseUrl: '',
    url: '',
}).then(res => {
    console.log(res);
}).catch(err => {
    console.log(err);
})*/


// 拦截器的使用
export function request2(config) {

    const instance = axios.create({
        baseUrl: config.baseUrl,
        timeout: 5000
    });


    //设置拦截器
    //请求拦截处理
    instance.interceptors.request.use(config => {
        //为什么要用拦截器:
        //1、比如config中的一些信息不符合服务器的要求,增加header等等
        //2、每次网络请求比较慢, 希望在界面上加个正在进入的图标
        //3、某些URL请求,必须带上验证参数(比如登录后必须带TOKEN)等等特殊的信息


        //最后必须返回,放行请求流程
        return config;
    }, err => {
        //错误消息
        console.log(err);
    });


    //响应拦截处理
    instance.interceptors.response.use(res => {
        console.log(res);


        //最后必须返回成功的data
        return res.data;
    }, err => {
        console.log(err);
    });


    return instance(config);
}













相关文章

网友评论

      本文标题:axios封装使用

      本文链接:https://www.haomeiwen.com/subject/xtmpsktx.html