Usage
Basic Example
// ESM
import { RateLimiter, rateLimitMiddleware } from '@the-node-forge/api-rate-limit';
// CommonJs
const {
RateLimiter,
rateLimitMiddleware,
} = require('@the-node-forge/api-rate-limit');
Configuration
const app = express();
// Set up rate limiter (10 requests per minute)
const limiter = new RateLimiter({ windowMs: 60000, maxRequests: 10 });
// Apply middleware globally
app.use(rateLimitMiddleware(limiter));
1️⃣ 🌐 JavaScript/TypeScript Example
Easily integrate with JavaScript/TypeScript.
// Javascript
import RateLimiter from '@the-node-forge/api-rate-limit';
// Create a rate limiter allowing 5 requests per minute
const limiter = new RateLimiter({ windowMs: 60000, maxRequests: 5 });
const userId = 'user123'; // Could be an API key or IP
if (limiter.isAllowed(userId)) {
console.log('Request allowed ✅');
} else {
console.log('Too many requests ❌');
}
2️⃣ 🌐 Express Middleware Example - Global
Easily integrate with an Express API.
import express from 'express';
import { RateLimiter, rateLimitMiddleware } from '@the-node-forge/api-rate-limit';
const app = express();
// Set up rate limiter (10 requests per minute)
const limiter = new RateLimiter({ windowMs: 60000, maxRequests: 10 });
// Apply middleware globally
app.use(rateLimitMiddleware(limiter));
app.get('/', (req, res) => {
res.send('Welcome to my API!');
});
app.listen(3000, () => console.log('Server running on port 3000'));
3️⃣ 🌐 Express Middleware Example - Specific
Easily integrate with an Express API.
import express from 'express';
import { RateLimiter, rateLimitMiddleware } from '@the-node-forge/api-rate-limit';
const app = express();
const limiterFiveReq = new RateLimiter({ windowMs: 60000, maxRequests: 5 });
const limiterTenReq = new RateLimiter({ windowMs: 60000, maxRequests: 10 });
// Apply rate limiting to only specific routes
app.get('/public', (req, res) => {
res.send('This route has no rate limiting!');
});
// Apply rate limiting only to this route
app.get('/limited', rateLimitMiddleware(limiterFiveReq), (req, res) => {
res.send('This route is rate-limited to 5 requests!');
});
app.post('/submit', rateLimitMiddleware(limiterTenReq), (req, res) => {
res.send('This POST request is also rate-limited to ten requests!');
});
app.listen(3000, () => console.log('Server running on port 3000'));
For API details, see API_REFERENCE.md.
⭐ Support
If you find this package useful, please **give it a ⭐ on GitHub