Node.js Integration

Integrating RateShield into a Node.js (or Express) application takes only a few lines of code as middleware.

Express Middleware Example

const express = require("express");
const app = express();

const RETA_SHIELD_KEY = process.env.RATESHIELD_API_KEY;

async function rateLimitMiddleware(req, res, next) {
  const ip = req.headers["x-forwarded-for"] || req.socket.remoteAddress;

  try {
    const rsObj = await fetch("https://api.rateshield.com/per/endpoint", {
      method: "POST",
      headers: {
        "Authorization": `Bearer ${RETA_SHIELD_KEY}`,
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        rate: { key: ip },
        counter_addition: 1
      })
    });

    if (rsObj.status === 429) {
      return res.status(429).json({ error: "Too many requests" });
    }

    next();
  } catch (err) {
    console.error("Rate limit check failed", err);
    // Fail open or closed depending on your preference
    next();
  }
}

app.use(rateLimitMiddleware);