再见,Axios!找出该新代码如何完全替换HTTP更受欢迎的请求库。
#javascript #网络开发人员 #前端 #axios

如果您在JavaScript中使用了HTTP请求,则可能听说过Axios。他是一个非常受欢迎的图书馆,可以在JavaScript中提出HTTP要求,但这是可选的?

在这篇文章中,我将提供更简单,更有效的替代方案,以在JavaScript中提出HTTP请求。最重要的是:不需要外部库!

以下方式是如何创建抽象以简单而直接地制作HTTP请求的示例:

import to from './to'

export default new Proxy({}, {
  get (_, method) {
    return function (url) {
      const init = {
        method
      }

      return {
        blob () {
          return to(
            fetch(url, init).then(response => response.blob())
          )
        },

        body (body) {
          Object.assign(init, {
            body: JSON.stringify(body)
          })
          return this
        },

        cache (cache) {
          Object.assign(init, { cache })
          return this
        },

        headers (headers) {
          Object.assign(init, {
            headers: new Headers(headers)
          })
          return this
        },

        json () {
          return to(
            fetch(url, init).then(response => response.json())
          )
        },

        mode (mode) {
          Object.assign(init, { mode })
          return this
        },

        signal (signal) {
          Object.assign(init, { signal })
          return this
        },

        text () {
          return to(
            fetch(url, init).then(response => response.text())
          )
        }
      }
    }
  }
})

以这种方式创建一个具有代理的对象,该对象拦截了属性的所有调用,并且所有物体中不存在的所有调用。因此,我们可以将财产或母亲称为©任何,该财产将被解释为fetch对象的母亲。

母亲©All to是一个涉及承诺的函数,添加了错误处理,该函数返回带有错误和承诺结果的数组。这使我们能够使用等待的人更简单地对待承诺的反应。

export default (promise) =>
  promise
    .then(data => [null, data])
    .catch(error => [error, null])

每次在对象上调用属性时,整个get都会调用。他收到参数,即访问该属性的名称,并返回该属性时将执行的函数。此函数为fetch创建一个初始化对象,然后定义Mother Vania所有在此对象中添加属性的人,例如Blob,该对象执行请求并返回BLOB格式的承诺,而json则执行请求并返回一个承诺以JSON格式遏制。

要更好地了解如何使用此代码,让我们看看一个使用的示例:

import http from './http'

async function getTodoList() {
  const response = await http.get('https://jsonplaceholder.typicode.com/todos')
    .cache('no-store')
    .headers({
      'Content-Type': 'application/json'
    })
    .json()

  return response
}

在此示例中,我们正在使用创建的抽象来执行HTTP请求。首先,我们称为将URL作为参数传递的HTTP对象get。然后,我们链接其他母亲©所有需要添加配置的人,例如cachecache添加了缓存配置â£o,headersheaders,添加了一个头。等等。

通过此抽象,我们可以直接直接地提出HTTP请求,而无需像Axios这样的外部库。而且我们仍然具有更精美,更奇特的插入物的优势。

尝试一下,看看在JavaScript中执行HTTP请求的简单!