1.0.2 • Published 6 months ago
express-api-limiter v1.0.2
express-api-limiter
express-api-limiter
is a simple, lightweight, and flexible rate-limiting middleware for Express.js applications. It allows you to define custom rate limits for individual API routes, ensuring that clients can only make a specified number of requests within a given time window. This helps to prevent API abuse and overloads while maintaining a smooth user experience.
Features
- Custom rate-limiting for each route with flexible configurations.
- Set a time window (e.g., 1 minute, 1 hour) and maximum requests (e.g., 100 requests).
- Easy integration with Express.js.
- Memory-based rate-limiting solution with client IP address tracking.
- Provides customizable error responses when rate limits are exceeded.
Installation
To install the package, run the following command in your project:
npm install express-api-limiter
Usage
1. Import the RateLimiter
import { RateLimiter } from 'express-api-limiter';
2. Create an Instance of RateLimiter
const rateLimiter = new RateLimiter();
3. Apply the Rate Limiter Middleware to a Route
You can apply the rate limiter directly to a specific route using rateLimiter.middleware
with custom rate limit parameters:
import express from 'express';
import { RateLimiter } from 'express-api-limiter';
const app = express();
const rateLimiter = new RateLimiter();
// Example: Apply rate-limiting middleware directly to a specific route
app.get('/api/endpoint', rateLimiter.middleware({ windowMs: 1, maxCalls: 100 }), (req, res) => {
res.send('This is a rate-limited API endpoint!');
});
// Example: Another route with different rate limit
app.get('/api/another-endpoint', rateLimiter.middleware({ windowMs: 5, maxCalls: 50 }), (req, res) => {
res.send('This is another rate-limited API endpoint with a different limit.');
});
// Start the server
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
Parameters
windowMs
: The time window in minutes for the rate limit (e.g.,1
for 1 minute).maxCalls
: The maximum number of requests allowed within thewindowMs
period.
4. Handling Exceeding Rate Limit
If a client exceeds the allowed rate limit, they will receive a response with status code 429
and a message like:
{
"message": "Too many requests. Please try again after 1 minute."
}
License
This package is open-source and available under the MIT License.