Implement Express Middleware
masterTo use rate-limiter-flexible in an Express application, create a middleware function that calls .consume(key) on your limiter instance. If the promise resolves, call next(). If it rejects, return a 429 Too Many Requests status.
const Redis = require('ioredis');
const { RateLimiterRedis } = require('rate-limiter-flexible');
const redisClient = new Redis({ enableOfflineQueue: false });
const rateLimiter = new RateLimiterRedis({
storeClient: redisClient,
keyPrefix: 'middleware',
points: 10,
duration: 1,
});
const rateLimiterMiddleware = (req, res, next) => {
rateLimiter.consume(req.ip)
.then(() => next())
.catch(() => res.status(429).send('Too Many Requests'));
};
app.use(rateLimiterMiddleware);