js中es6新增请求方法fetch的封装

typescript 复制代码
function formtor(data) {
    let dataStr = ''
    Object.keys(data).forEach(key => {
       dataStr += key + '=' + data[key] + '&'
    })
    if (dataStr !== '') {
       dataStr = dataStr.substring(0, dataStr.length - 1)
    }
    return dataStr
}

async function ajax(url = '', type = 'GET', data = {}) {
    if (type === "GET") {
       const dataStr = formtor(data)
       url += url + '?' + dataStr
    }
    let requestConfig = {
       method: type,
       headers: {
          "Content-type": "application/x-www-form-urlencoded;charset=UTF-8"
       }

    }
    if (type === "POST") {
       // requestConfig.body = formtor(data)
       //拦截对象,为对象增加新的属性
       //在es6中,我们不推荐直接为一个对象增加新属性的时候使用读取方式
       Object.defineProperties(requestConfig, "body", {
          value: formtor(data)
       })
    }
    const response = await fetch(url, requestConfig)
    const responseJSON = await response.json()
    return responseJSON
}
相关推荐
开发者小天6 小时前
React中使用useParams
前端·javascript·react.js
lichong9516 小时前
Android studio release 包打包配置 build.gradle
android·前端·ide·flutter·android studio·大前端·大前端++
nvvas6 小时前
npm : 无法加载文件 D:\nvm\nodejs\npm.ps1,因为在此系统上禁止运行脚本问题解决
前端·npm·node.js
拉不动的猪7 小时前
浏览器之内置四大多线程API
前端·javascript·浏览器
拉不动的猪7 小时前
Token无感刷新全流程(Vue + Axios + Node.js(Express))
java·javascript·vue.js
一雨方知深秋7 小时前
AJAX学习 ---- axios体验
javascript·http·ajax·axios·url·catch·then
林太白7 小时前
5大排序算法&2大搜索&4大算法思想
前端
摇滚侠7 小时前
浏览器的打印功能,如果通过HTML5,控制样式
前端·html·html5
喵喵侠w7 小时前
uni-app微信小程序相机组件二次拍照白屏问题的排查与解决
前端·数码相机·微信小程序·小程序·uni-app
超大只番薯7 小时前
在Next.js中实现页面级别KeepAlive
前端