简介
@adobe/helix-fetch
是一个由 Adobe 公司开发的 Node.js 包,它可以方便地完成 HTTP 请求,并自动处理 JSON、URL 编码等类型的数据,同时支持重试、缓存、超时等功能。在前端开发中,我们经常需要与后端服务器进行数据交互,使用 @adobe/helix-fetch
可以显著提高开发效率和代码可读性。
安装
在项目中安装 @adobe/helix-fetch
,可以使用 npm 或 yarn 工具:
npm install @adobe/helix-fetch
或
yarn add @adobe/helix-fetch
快速开始
使用 @adobe/helix-fetch
发起 HTTP 请求非常简单。以下是一个基本的示例,向 GitHub API 发起一个 GET 请求,获取用户信息:
const fetch = require('@adobe/helix-fetch'); fetch('https://api.github.com/users/wangxiaohua1011') .then(res => res.json()) .then(user => console.log(user)) .catch(err => console.error(err));
需要注意的是,在 Node.js 中,使用 fetch 不需要导入异步模块,因为 Node.js 自带的实现已经支持异步请求了。
API
fetch(url[, options])
url
<string> 请求地址options
<object> 可选项,包括请求方法、请求头、请求体等信息
返回值为 Promise 对象,如果请求成功,则返回一个 Response 对象;如果请求失败,则会抛出一个错误。Response 对象包括以下属性:
ok
<boolean> 表示请求是否成功status
<number> HTTP 状态码statusText
<string> HTTP 状态码描述headers
<Headers> 响应头body
<Readable> 响应体数据流,需要手动处理
Response 对象
res.ok <boolean>
表示请求是否成功。如果 res.status
在 200-299
之间,则返回 true
;否则返回 false
。
res.status <number>
包括 HTTP 响应状态码。根据不同的事件结果,其值不同。
res.statusText <string>
表示 HTTP 状态码相关的具体描述。
res.headers <Headers>
表示响应头的 Headers
对象。可以通过以下方法获取:
get(name)
返回指定名字的响应头has(name)
检查是否包含指定的响应头forEach(callback, thisArg)
遍历响应头,调用callback
函数
res.clone()
返回一个 Response
对象的拷贝,拷贝的对象与原来的对象相同。
res.arrayBuffer()
返回响应数据的 ArrayBuffer 对象。
res.blob()
返回响应数据的 Blob 对象。
res.formData()
返回响应数据的 FormData 对象。
res.json()
返回响应数据的 JSON 表示,也就是将响应数据进行 JSON 解析。
res.text()
返回响应数据的字符串表示。
options 可选项
options
支持的选项包括:
method <string>
HTTP 请求的方法,默认值为 GET。可以是:GET、POST、PUT、DELETE 等。
headers <object>
HTTP 请求的头部信息,使用对象进行指定。
body <string> | <Buffer> | <Buffer[]> | <Readable>
HTTP 请求的主体,可以是字符串、Buffer、Buffer 数组或一个可读数据流。如果是字符串,则会自动进行 URL 编码,并自动设置 Content-Type 头部为 text/plain;如果是 Buffer 或 Buffer 数组,则自动设置 Content-Type 为 application/octet-stream。如果是可读数据流,则需要手动设置 Content-Type。
mode <string>
Request 对象的 mode 属性,可以是 cors、no-cors、same-origin 之一。
cache <string>
Request 对象的 cache 属性,用于指定缓存处理方式。可以是 default、no-store、reload、no-cache、force-cache、only-if-cached 之一。
redirect <string>
Request 对象的 redirect 属性,可以是 follow、error、manual 之一。默认为 follow。
referrer <string>
Request 对象的 referrer 属性,用于指定请求来源。
referrerPolicy <string>
Request 对象的 referrerPolicy 属性,用于指定请求来源的策略。
integrity <string>
Request 对象的 integrity 属性,用于指定文件的完整性校验值。
signal <AbortSignal>
AbortSignal 对象,用于指定中止请求的信号对象。
window <any>
可选,用于指定全局对象。
示例
以下是一个使用 @adobe/helix-fetch
发送 POST 请求的示例:
-- -------------------- ---- ------- ----- ----- - ------------------------------ ----- ------- - - ------- ------- -------- - --------------- ------------------ -- ----- ---------------- ----- -------- ---- -- -- -- --------------------------------- -------- --------- -- ----------- ---------- -- ------------------ ---------- -- --------------------
总结
@adobe/helix-fetch
为我们在前端开发中提供了一种轻便、快捷、功能强大的 HTTP 请求方式,支持丰富的可选项和几乎所有的 HTTP 方法。不仅如此,它还会自动地处理 URL 编码、JSON 解析等复杂的操作,提高了代码的可读性和可维护性。因此,它是一个非常值得学习和使用的 npm 包。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedaca1b5cbfe1ea0610aa2