如何使用 express-rate-limit 中间件限制请求频率?

· 约 3 分钟读完 · 第 73 / 120 章

推荐答案

本题详细解读

1. 什么是 express-rate-limit?

express-rate-limit 是一个用于 Express 应用程序的中间件,用于限制来自同一 IP 地址的请求频率。它可以帮助防止滥用 API 或 DDoS 攻击。

2. 如何安装 express-rate-limit?

在项目目录中运行以下命令来安装 express-rate-limit:

3. rateLimit 配置选项

  • windowMs: 时间窗口的长度,单位为毫秒。例如,15 * 60 * 1000 表示 15 分钟。
  • max: 在时间窗口内允许的最大请求次数。例如,100 表示每个 IP 在 15 分钟内最多允许 100 次请求。
  • message: 当请求超过限制时返回的错误消息。
  • headers: 布尔值,表示是否在响应头中添加限流信息(如 X-RateLimit-Limit 和 X-RateLimit-Remaining)。

4. 应用限流中间件

通过 app.use(limiter) 将限流中间件应用到整个应用程序。你也可以将限流中间件应用到特定的路由上,例如:

5. 自定义限流逻辑

你可以通过 keyGenerator 选项自定义限流的键值生成逻辑。例如,根据用户 ID 而不是 IP 地址进行限流:

6. 处理限流错误

当请求超过限制时,express-rate-limit 会返回一个 429 状态码(Too Many Requests),并附带配置的 message。你可以通过自定义 handler 选项来处理限流错误: