在现代化的 Web 开发中,请求数据是完成大部分前端工作的基础步骤之一。为了更加方便地处理请求数据,许多程序员使用 fetch
来实现从服务器获取数据。然而,使用原生 fetch
时,有些开发者觉得它需要更多的代码来完成繁琐的请求处理。这就是为什么很多人转向使用更加便利的 npm
包。其中,使用广泛的 enhanced-fetch
可以大大简化请求的处理流程,尤其是在异步请求少的时候很方便。
什么是 enhanced-fetch
enhanced-fetch
是一个基于原生 fetch
API 开发的增强库,可以使得开发者使用更加简化、常见的 api 细节,来获取和管理返回的数据。
enhanced-fetch
可以包含一些简单、易用的方法来处理请求和结果,从而拓展 fetch
API。这些方法包括设置请求头,设置请求超时时间、同时支持 jsonP 和 WebSocket 请求,管理 cookie 和 local storage 安全不受限制地使用等。
如何在项目中使用 enhanced-fetch
要使用 enhanced-fetch
包,开发人员需要进行以下操作:
首先,在你的应用程序中安装
enhanced-fetch
。npm install enhanced-fetch --save
然后,在你的项目代码中引用
enhanced-fetch
。import eFetch from 'enhanced-fetch';
使用
eFetch
对象来发送请求。下面是一个简单的示例,发出一个 GET 请求,并获取响应。eFetch('https://api.github.com/users', { method: 'GET' }).then(response => response.json()) .then(users => console.log(users)) .catch(error => console.error(error));
操作指南
基本请求
获取设置请求、主体类型、支持哪些方法(包括 GET、POST 等等)
eFetch(url, requestDetails)
- URL:请求的 URL 地址。
- requestDetails:包含可选配置信息的对象。这里可以设置 fetch 主体类型,支持的方法、and so on.
使用 JSON
eFetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title: 'JavaScript' }) }).then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
设置请求头
-- -------------------- ---- ------- ----- ------- - - ---------------- ------ - - -------------------------- --------------- ------------------ -- ----------- - ------- ------- -------- -------- ----- ---------------- ------ ------------ -- ---------------- -- ---------------- ---------- -- ------------------ ------------ -- ----------------------
Cookie 和 local storage
使用 enhanced-fetch
获取 cookie 和 local storage 信息还是很方便的。且不论存储内容到 workstation 和 server 端的技巧,你在本地操作时使用起来可能是这个样子的:
-- -------------------- ---- ------- ----- ------- - --------------------------------------- -- -- - ----- ----- ---- - ------------------------------------------- --- - ------ ------------------ - ------ --------------- -- - ----- --- - ------ ------------------ - ------ --- -- - -- --- ----------------------------- ----------------------------- ------ -------------------------------- --------------------
超时时间
指定超时时间,例如:
eFetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title: 'JavaScript' }), timeout: 5000 }).then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
JSONP
显示一个 JSONP 请求的简单例子:
eFetch('http://127.0.0.1:4000/products?callback=showProducts').then(response => response.jsonP()) .then(data => console.log(data)) .catch(error => console.error(error));
WebSocket
如果你需要保持长时间的连接以便实时收发信息,那么 WebSocket 就是一个很棒的选择。在开始使用 enhanced-fetch
建立 websockets 连接之前,你需要将 webpack 和 webpack-dev-sever 配置一下,保证你在使用 webpack-dev-server 的时候可以让你在本地使用 websockets。通常是打开 devServer.webSocketServer 配置,或者填写相应选项。
const wsUrl = 'ws://localhost:8080'; eFetch.WebSocket(wsUrl, { open: function() { console.log('WebSocket has been opened!'); }, receive: function(data) { console.log('WebSocket response received: ' + data); } });
同时值得注意的是, WebSocket 的标准并没有 JavaScript 实现的规范,所以在一些特定的框架中会缺少该功能。请确保你的基础工具已经支持了。
结论
enhanced-fetch
是一个很棒的库,它可以使得开发人员在使用 fetch
时省去很多繁琐的代码。通过本文介绍,你可以知道如何使用 enhanced-fetch
并理解一些其实用性很高的特性。
这个库背后的代码优化效果让代码变得非常的精简,应该会是你会涉及的一个重要的 npm 包。不仅是简洁,而且同时还可以通过方法拓展,适应工作流程、拓展接口、配置对话框等等。很快,你就会意识到自己正在构建自己的 web 应用程序,它不仅能够更好标志着你的特点,而且还能够更迅速地解决开销项问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671a630d0927023822512