前言:在日常前端开发中,我们常常需要向后端发送请求,而请求的响应可能会受到多种因素的影响,例如网络问题、服务器宕机等等。为了保证我们的请求响应的正确性,我们会采用一些手段来保证请求的可靠性,如请求重试。本文将介绍如何通过 npm 包 repeatable-request
实现请求重试的功能。
什么是 repeatable-request
repeatable-request
是一个基于 Node.js 的请求重试工具,它内部使用了 http
、https
的原生库。如果您在开发 Node.js 应用程序的时候,需要发送请求并且需要重试,那么 repeatable-request
就是您非常不错的选择。
repeatable-request 的优势
相对于其它的请求重试工具,repeatable-request
有几个明显的优势:
- 简单易用:只需要传入目标网站的网址及请求的参数,即可轻松发送请求。
- 可靠性高:内部通过
http
、https
的原生库来发送请求,稳定性有保证。 - 去重复机制:
repeatable-request
内置了去重复机制,避免了多个请求同时发往同一个网站的情况,提高了性能。
安装与使用
npm 包 repeatable-request
可以很方便的通过 npm 安装。
npm install repeatable-request --save
使用时,只需要引入 repeatable-request
包,然后传入目标网站的网址即可。
-- -------------------- ---- ------- ----- ----------------- - ------------------------------ ----- --- - ------------------------- ----- ------- - --- ---------------------- -------- ----- ---- ----- -- - -- ----- - ----------------- - ---- - ------------------ - ---
重试次数默认为 5 次,当然你可以自己指定。
repeatableRequest(url, { retries: 10 }, (err, res, body) => { if (err) { console.log(err); } else { console.log(body); } });
重试策略
repeatable-request
内置了四种重试策略:
1. 默认策略
默认的重试策略是,出现任何错误都将进行重试,重试次数默认为 5 次。
repeatableRequest(url, (err, res, body) => { if (err) { console.log(err); } else { console.log(body); } });
2. 自定义策略
除了默认策略以外,我们还可以自定义重试策略。以下是一个自定义重试策略的例子:
-- -------------------- ---- ------- ----- ------- - - -------- - -------- -- ------- -- ----------- ----- ----------- ----- ---------- ----- -- -- ---------------------- -------- ----- ---- ----- -- - -- ----- - ----------------- - ---- - ------------------ - ---
自定义策略参数解释:
- retries:重试次数,默认 5 次。
- factor:每次重试延迟的倍数,每次重试之间的延迟时间是上一次的延迟时间乘以 factor,例如,默认的 delay 是 200ms,factor 是 2,那么第一次重试延迟 200ms,第二次重试延迟 400ms,依次类推。
- minTimeout:每次重试的最小延迟时间。
- maxTimeout:每次重试的最大延迟时间。
- randomize:是否随机化延迟时间。
3. 不重试策略
如果您不需要重试,也可以设置 retries
为 0。
-- -------------------- ---- ------- ----- ------- - - -------- -- -- ---------------------- -------- ----- ---- ----- -- - -- ----- - ----------------- - ---- - ------------------ - ---
4. 指定错误码重试策略
您还可以根据具体的错误码进行重试。以下是一个针对 504 错误码设定重试的例子:
-- -------------------- ---- ------- ----- ------- - - -------- - -------- -- -- -- --- -- ----------- ------ -- -- ---------------------- -------- ----- ---- ----- -- - -- ----- - ----------------- - ---- - ------------------ - ---
总结
repeatable-request
是一款可靠性较高的请求重试工具,非常适合用于 Node.js 环境中的请求重试。它使用简单,性能稳定,内置了去重复机制,支持多种重试策略,可以满足我们日常前端开发中的请求重试需求。我们在开发过程中应该积极使用类似的工具,以保证我们的应用更加可靠、性能更佳。
示例代码
-- -------------------- ---- ------- ----- ----------------- - ------------------------------ ----- --- - ------------------------- ----- ------- - --- ---------------------- -------- ----- ---- ----- -- - -- ----- - ----------------- - ---- - ------------------ - --- ---------------------- - -------- -- -- ----- ---- ----- -- - -- ----- - ----------------- - ---- - ------------------ - --- ----- ------- - - -------- - -------- -- ------- -- ----------- ----- ----------- ----- ---------- ----- -- -- ---------------------- -------- ----- ---- ----- -- - -- ----- - ----------------- - ---- - ------------------ - --- ----- ------- - - -------- -- -- ---------------------- -------- ----- ---- ----- -- - -- ----- - ----------------- - ---- - ------------------ - --- ----- ------- - - -------- - -------- -- -- -- --- -- ----------- ------ -- -- ---------------------- -------- ----- ---- ----- -- - -- ----- - ----------------- - ---- - ------------------ - ---
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055fca81e8991b448dd4eb