Sequence NODE_255
Medium

Implement Request Rate Limiting Middleware

Express.js
Node.js
Technical Specification

Create simple in-memory rate-limiting middleware limiting each IP to N requests per minute.

Input/Output Samples
Input:20 requests in a minute with limit=10
Output:First 10 OK, then 429
Optimal Logic Path
const buckets = new Map();

function rateLimit(limit = 60, windowMs = 60000) {
  return (req, res, next) => {
    const ip = req.ip;
    const now = Date.now();
    const list = (buckets.get(ip) || []).filter((ts) => now - ts < windowMs);
    if (list.length >= limit) {
      buckets.set(ip, list);
      return res.status(429).json({ error: "Too many requests" });
    }
    list.push(now);
    buckets.set(ip, list);
    next();
  };
}

app.use(rateLimit(60, 60000));
Architectural Deep-Dive
We reuse the classic sliding window logic and convert denial into HTTP 429 responses.