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

时间:2017-09-20 16:02:15

标签: node.js api npm rate-limiting

我正在处理多次访问公共API的应用程序。但是,API具有我的应用程序必须满足的多个速率限制。

费率限制是 每1秒发出20次请求 和 每2分钟发出100次请求。

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

1 个答案:

答案 0 :(得分:1)

如果您使用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);