Rate limiter module in Node.js using Express.js:
const express = require('express');
const rateLimit = require('express-rate-limit');
const app = express();
// Apply rate limiting middleware
const limiter = rateLimit({
windowMs: 60 * 1000, // Time window in milliseconds (1 minute)
max: 60, // Maximum number of requests allowed per windowMs
});
app.use(limiter);
// Define your routes and application logic below
// Example route
app.get('/', (req, res) => {
res.send('Hello, world!');
});
// Start the server
app.listen(3000, () => {
console.log('Server started on port 3000');
});
In this example, we are using the express-rate-limit
middleware to implement rate limiting. The middleware is applied to all routes in the application using app.use(limiter)
.
The rateLimit
function is configured with two options: windowMs
and max
. The windowMs
option specifies the time window in milliseconds, which is set to 1 minute (60,000 milliseconds). The max
option specifies the maximum number of requests allowed per windowMs
, which is set to 60 requests.
When a client exceeds the rate limit, the middleware automatically responds with a 429 Too Many Requests status code.
Please note that this is a basic example of a rate limiter module in Node.js using Express.js. You can customize the rate limiting options (windowMs
and max
) and apply the middleware to specific routes or route groups as per your requirements. Additionally, you may need to integrate a persistent store (e.g., Redis) for distributed rate limiting across multiple application instances.