在前端开发中,我们经常需要使用限速功能来防止在短时间内对服务器或 API 发送过多的请求,导致服务器负载过大或被拒绝服务。一个可选的解决方案是 node-rate-limit,它是一个 npm 包,提供了一个方便易用的中间件来实现限速。
本篇文章将介绍如何使用 node-rate-limit 实现限速,包括安装,设置和示例代码。
安装
首先,需要安装 node-rate-limit。打开终端,进入项目所在目录,执行以下命令:
$ npm install --save express node-rate-limit
其中,--save
选项将 node-rate-limit
添加到项目的依赖中。
设置
安装成功后,需要将 node-rate-limit
应用于项目中适当的请求中间件上。在 app.js
中,添加以下代码:
const rateLimit = require("node-rate-limit"); app.use( rateLimit({ windowMs: 60 * 1000, // 1 minutes max: 100 // limit each IP to 100 requests per windowMs }) );
以上代码将 node-rate-limit
添加到了项目中间件中,并指定了每个 IP 地址在 1 分钟内最多请求次数为 100。其中,windowMs
表示时间段(以毫秒为单位),max
表示该时段内允许的最大请求数。
还可以通过以下选项来配置限速器:
delayAfter
:在达到delayAfter
次请求后,请求会被延迟(单位:请求数)。delayMs
:延迟的时间长度(单位:毫秒)。skipFailedRequests
:是否跳过请求失败的请求。
示例代码
我们可以通过一个简单的示例将 node-rate-limit
应用于实际项目中。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --------- - --------------------------- ----- --- - ---------- -- ---- -- ----- - --- -------- ----------- --------- -- - ----- ---- - -- -- ------------ ----- ---- -- - ---------------- --------- --- ---------------- -- -- - ------------------- ------- -- ------------------------ ---
在上面的代码中,我们通过 app.use
将 node-rate-limit
添加到了请求中间件中,并限制每个 IP 在每分钟内最多请求 5 次。在 app.get
中,我们仅仅是返回了一个简单的信息,但是这个限速器会防止我们在短时间内收到大量请求。
加载你的项目并访问网站(http://localhost:3000),然后尝试在一分钟内发送超过 5 个请求。限速器将会阻塞你的后续请求并返回一个 429 状态码。
结论
在本文中,我们介绍了如何使用 node-rate-limit
应用限速功能。确保在使用该 npm 包时为其提供正确的配置信息,以便更好地实现限速功能。
希望本文能对你理解和使用 node-rate-limit
有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600573ad81e8991b448e9a97