Rate limiting — restricts number of requests per time window.
Using express-rate-limit:
1const rateLimit = require("express-rate-limit");23const limiter = rateLimit({4 windowMs: 15 * 60 * 1000, // 15 minutes5 max: 100, // limit per window6 message: "Too many requests",7 standardHeaders: true,8 legacyHeaders: false,9});1011app.use("/api/", limiter);
Custom rate limiter with Redis:
1const RedisStore = require("rate-limit-redis");2const redis = require("redis").createClient();34app.use(rateLimit({5 store: new RedisStore({6 sendCommand: (...args) => redis.sendCommand(args),7 }),8 windowMs: 15 * 60 * 1000,9 max: 100,10}));
Key points: