利用axios进行二次封装

        因为在项目中我们经常会在不同的页面进行数据的渲染,而使用的数据通常会经过发起网络请求的方式来实现,在很多时候我们进行的操作都会繁杂且重复,这时候我们就会想到将一部分通用的操作给提取出来,进行一个二次封装,这样就会更加便于我们进行数据网络请求操作,

        下面是一个实例axios的二次封装:

​
// 引入需要用到的axios网络请求包资源,前提在项目中需要自己先安装
import axios from 'axios'
// 引入存在状态管理里面的token
import store from '../store'

const Ajax = axios.create({
    baseURL: '/apis',
    timeout: 15000
})

// 实现请求前拦截
// 在拦截器中,如果没有问题,直接返回AxiosRequestConfig,否则返回Promise.reject方法,这个方法会在Ajax.request的catch回调上捕获
Ajax.interceptors.request.use(function(config) {
    let token = store.getState().common.token,
        otherPath = ['/user/login'] // 不需要进行请求拦截的请求地址

    if (otherPath.includes(config.url)) {
        return config
    } else {
        if (!token) {
            return Promise.reject({code: 400, message: 'token参数不存在'})
        } else {
            config.headers.token = token
            return config
        }
    }
})

export default req => {
    if (!req.url) throw new Error('异步请求,url地址必传')

    return new Promise(resolve => {
        Ajax.request({
            url: req.url,
            method: req.method || 'get',
            data: req.data || {},
            params: req.params || {},
            // 文件上传进度的回调函数
            // onUploadProgress?: (progressEvent: any) => void; 他需要接收一个回调函数
            onUploadProgress: req.fileUpload || (() => {})
        }).then(({data}) => {
            resolve(data)
        }).catch(e => {
            console.log(e)
            resolve({code: 500, message: '后端接口问题,请联系后端处理'})
        })
    })
}

​

这是一个简单的二次封装,在实际的项目中会比这个更加的复杂!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值