npm 包 fetch 使用教程

简介

fetch 是一个专门用于浏览器端的 HTTP 请求 API。它基于 Promise 设计,并提供了一些高级特性,例如请求取消、请求超时和跨域支持等。fetch API 旨在取代 XMLHttpRequest (XHR)。

安装

fetch API 已经内置到现代浏览器中,如果需要支持老版本浏览器,则需要使用 fetch 的 polyfill 库。常见的 polyfill 库有 whatwg-fetchfetch-ie8。在 Node.js 中使用 fetch 则需要安装 node-fetch 模块:

--- ------- ----------

基本用法

使用 fetch 发送 GET 请求的代码如下:

----------
  -------------- -- ----------------
  ---------- -- ------------------
  ------------ -- ----------------------

这里的 url 是需要请求的地址。fetch 函数返回一个 Promise 对象,可以通过 .then() 方法处理响应数据,或者通过 .catch() 方法捕获异常。

如果需要发送 POST 请求,则需要传递第二个参数:

---------- -
  ------- -------
  -------- -
    --------------- ------------------
  --
  ----- --------------------
--
  -------------- -- ----------------
  ---------- -- ------------------
  ------------ -- ----------------------

这里的 data 是需要发送的数据对象,需要先使用 JSON.stringify() 方法将其转换为 JSON 字符串。在请求头中需要设置 Content-Type'application/json'

高级特性

请求取消

使用 AbortController 可以取消一个正在进行的请求:

----- ---------- - --- ------------------

---------- - ------- ----------------- --
  -------------- -- ----------------
  ---------- -- ------------------
  ------------ -- ----------------------

-- ----
-------------------

这里的 signal 参数是一个 AbortSignal 对象,用于与 AbortController 相关联。调用 abort() 方法即可取消请求。

请求超时

使用 AbortControllersetTimeout 可以实现请求超时:

----- ---------- - --- ------------------
----- --------- - ------------- -- -
  -------------------
-- ------

---------- - ------- ----------------- --
  -------------- -- ----------------
  ---------- -- ------------------
  ------------ -- ---------------------
  ----------- -- -------------------------

这里的 setTimeout 函数用于设置超时时间,超过指定时间后会自动取消请求。需要注意的是,finally() 方法会在 Promise 完成后调用,无论成功还是失败。

跨域支持

在浏览器端使用 fetch 发送跨域请求时,默认情况下会受到同源策略的限制。可以通过以下方式解决跨域问题:

  1. 在服务端设置 CORS(跨域资源共享)头信息。
  2. 使用 JSONP(JSON with Padding)技术。
  3. 使用代理服务器。

总结

fetch API 是一个非常强大的 HTTP 请求工具,不仅支持基本的 GET 和 POST 请求,还提供了许多高级特性,例如请求取消、请求超时和跨域支持等。使用 fetch 可以让前端开发更加便捷、高效。

示例代码:fetch-demo

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/32281