我正在处理多次访问公共API的应用程序。但是,API具有我的应用程序必须满足的多个速率限制。
费率限制是 每1秒发出20次请求 和 每2分钟发出100次请求。
我一直在寻找一些速率限制套餐,但所有这些套餐似乎只能设置一个速率限制。我可以将速率限制设置为每秒20个请求,但之后我可以在5秒内发出100个请求并违反第二个限制。我还可以将速率限制设置为每2分钟100个请求,但这将立即违反第一个限制。是否有一些包可以帮助我达到两种速率限制?
答案 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);