class ajax content,class类封装ajax请求

class Request {

constructor(baseURL){

// 基准地址!

this.baseURL = baseURL

}

/**

* 封装的请求方法!

* @param {string} url 请求地址

* @param {string} type 请求类型,默认get

* @param {object} data 提交的参数

* @param {object} headers 请求头配置

*/

ajax(url, type = "get", data = {}, headers = {}) {

if (!url) {

throw new Error('请求地址没有传入')

}

type = type.toUpperCase();

if (!['GET', 'POST'].includes(type)) {

throw new Error('只支持get和post方式')

}

if (type === "GET") {

// 如果对象是空就不需要处理

let keyarr = Object.keys(data);

if (keyarr.length) {

// 将对象进行序列化,变成字符串

let datastr = "";

for (let k in data) {

datastr += k + "=" + data[k] + "&"

}

datastr = datastr.substring(0, datastr.length - 1)

// 拼接到url地址上面

url += "?" + datastr

}

}

return new Promise( (resolve, reject)=>{

let conifg = {

method: type,

headers

}

if (type === "POST") {

conifg.body = data;

}

fetch(this.baseURL + url, conifg).then(function (response) {

return response.json();

}).then(function (res) {

resolve(res)

}).catch(function (err) {

reject(err)

})

})

}

/**

* get请求

* @param {*} url

* @param {*} data

* @param {*} header

*/

get(url, data, header){

return this.ajax(url, "get", data, header)

}

/**

* post请求

* @param {*} url

* @param {*} data

* @param {*} header

*/

post(url, data, header){

return this.ajax(url, "post", data, header)

}

/**

* all 请求 同时发送多个请求

* @param {*} reqArr

*/

all(reqArr = []){

if (Array.isArray(reqArr)) {

// todo 检查每个值是不是Promise

return Promise.all(reqArr)

} else {

throw new Error('请传入数组')

}

}

}

// 封装的请求库!

export default new Request(前缀地址);

标签:封装,请求,get,url,type,param,ajax,data,class

来源: https://www.cnblogs.com/zhangly/p/13909332.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值