Node.js api 具有多个速率限制的速率限制

Node.js api rate limiting with multiple rate limits

我正在开发一个多次点击 public API 的应用程序。但是,API 有多个我的应用程序必须满足的速率限制。

速率限制是 每 1 秒 20 个请求 和 每 2 分钟 100 个请求。

我一直在寻找一些速率限制包,但它们似乎都只能设置一个速率限制。我可以将速率限制设置为每秒 20 个请求,但是我可以在 5 秒内发出 100 个请求并违反第二个限制。我也可以将速率限制设置为每 2 分钟 100 个请求,但这会立即违反第一个限制。是否有一些软件包可以帮助我达到这两个速率限制?

如果您使用 this express middleware,您可以按照以下行设置 2 个限制:

var RateLimit = require('express-rate-limit');

var apiLimiterSeconds = new RateLimit({
  windowMs: 1, // 1 second
  max: 20,
  delayMs: 0 // disabled 
});

var apiLimiterMinutes = new RateLimit({
  windowMs: 2*60, // 2 minutes
  max: 100,
  delayMs: 0 // disabled 
});

// only apply to requests that begin with /api/ 
app.use('/api/', apiLimiterSeconds);
app.use('/api/', apiLimiterMinutes);