digi-rate-limiter
Version:
Custom rate limiting middleware for Node.js
22 lines (16 loc) • 507 B
JavaScript
const RateLimiter = require('./lib/rateLimiter');
const rateLimiterMiddleware = (options) => {
const limiter = new RateLimiter(options);
return (req, res, next) => {
const clientId = req.ip;
const result = limiter.handleRequest(clientId);
if (!result.allowed) {
return res.status(429).json({
message: 'Too many requests. Please try again later.',
retryAfter: result.remainingTime / 1000,
});
}
next();
};
};
module.exports = rateLimiterMiddleware;