封装简易axios

特点:

  • 1:函数的返回值为promise,成功的结果为response,异常的结果为error
  • 2:能处理多种类型的请求:GET,POST
  • 3:函数的参数为一个配置对象
						 {
                            url:'',// 请求地址
                            method:'',// 请求方式GET POST PUT DELETE
                            params:{},GET/DELETE请求的query参数
                            data:{},// post或者delete请求的请求体参数
                        }
  • 4:响应json数据自动解析为js

代码:

    function axios({
            url,
            method = 'GET',
            params = {},
            data = {}
        }) {
            // 返回值是一个promsie对象
            return new Promise((resolve, reject) => {
                // 处理params参数 get请求的时候params参数拼接到url上
                let queryStr = ''
                Object.keys(params).forEach((key) => {
                    queryStr += `${key} = ${params[key]}&`
                })
                // 去除最后一个&
                if (queryStr) {
                    queryStr = queryStr.substring(0, queryStr.length - 1)
                    URL += '?' + queryStr
                }
                // 执行异步ajax请求
                const request = new XMLHttpRequest()
                request.open(method, url, true)
                if (method === 'GET') {
                    request.send()
                } else if (method === 'POST') {
                    // 请求体中带json格式的参数时,必须加这个请求头。告诉服务器 请求体的格式是json格式
                    request.setRequestHeader('Content-Type', 'application/json;charset=utf-8')
                    request.send(JSON.stringify(data))
                }

                request.onreadystatechange = function () {
                    if (request.readyState === 4) {
                        if (request.status >= 200 && request.status < 300) {
                            // 响应的json自动转成js
                            // 执行成功了调用resolve()
                            const response = {
                                data:request.response,
                                status,
                                statusText
                            }
                            resolve(JSON.parse(response))
                        } else {
                            // 失败调用reject()
                            reject(new Error('MESSAGE'))
                        }

                    }else{
                        return
                    }
                }
            })
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值