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);