自定义简单的axios方法

发布时间 2023-11-04 17:48:38作者: 凌碎瞳缘
    function myAxios(config) {
      return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest()

        //如果存在想要放在链接后的参数?name=1&password=2
        if (config.params) {
          const paramsObj = new URLSearchParams(config.params)
          const queryString = paramsObj.toString()
          config.url += `?${queryString}`
        }

        //定义请求方法,还有url
        xhr.open(config.method || 'GET', config.url)

        //xhr发送请求加载完成后,执行
        xhr.addEventListener('loadend', () => {
          if (xhr.status >= 200 && xhr.status < 300) {
            resolve(JSON.parse(xhr.response))
          } else {
            reject(new Error(xhr.response))
          }
        })

        //如果存在json请求体
        if (config.data){
          const jsonStr = JSON.stringify(config.data)
          xhr.setRequestHeader('Content-Type','application/json')
          xhr.send(jsonStr);
        }else {
          xhr.send()
        }

      })
    }