有没有办法对express Nodejs中的每个api密钥使用不同的速率限制?

问题描述 投票:0回答:2

有没有办法对 Express Nodejs 中的每个 api 密钥使用不同的速率限制?

例如,api 密钥“guest”的速率限制为每天 500 个请求,api 密钥“key”的速率限制为每天 1000 个请求。

node.js express rate-limiting
2个回答
1
投票

简单的解决方案是使用一个名为 express-rate-limit 的 npm 包,这是一个流行的包,强烈推荐使用它。

如果该包不适合您,可以使用redis来实现,redis是一个内存数据库,因此您可以创建具有滑动时间的记录。当请求进来时,您可以更新或创建记录,如果达到限制,则阻止该请求,该逻辑可以在中间件中实现。


0
投票
const express = require('express');
const rateLimit = require('express-rate-limit');

const app = express();

// Define rate limit middleware for API1
const api1Limiter = rateLimit({
  max: 50,  // Maximum requests
  windowMs: 60 * 60 * 1000,  // 1 hour window
  message: 'Too many requests from this IP for API1, please try again in an hour!',
});

// Define rate limit middleware for API2
const api2Limiter = rateLimit({
  max: 100,  // Maximum requests
  windowMs: 60 * 60 * 1000,  // 1 hour window
  message: 'Too many requests from this IP for API2, please try again in an hour!',
});

// Apply rate limit middleware to specific routes
app.use('/api/api1', api1Limiter);
app.use('/api/api2', api2Limiter);

// Your API routes go here...

// Start the server
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});`enter code here`
© www.soinside.com 2019 - 2024. All rights reserved.