How to Slow Down or Limit API Requests in Express.js
In this article, I’m going to share how to slow down or limit rate of API requests in Express.js. Let’s get started:
Table of Contents
Install Package
We’ll use express-slow-down package in our application. let’s install this package:
npm install express-slow-down
Limit All Routes
In this example, we’re going to slow down all API routes requests:
const slowDown = require("express-slow-down");
const app = express();
app.enable("trust proxy"); // only if you're behind a reverse proxy (Heroku, Bluemix, AWS if you use an ELB, custom Nginx setup, etc)
const speedLimiter = slowDown({
windowMs: 20 * 60 * 1000, // 20 minutes
delayAfter: 70, // allow 70 requests per 20 minutes, then...
delayMs: 500 // begin adding 500ms of delay per request above 100:
// request # 71 is delayed by 500ms
// request # 72 is delayed by 1000ms
// request # 73 is delayed by 1500ms
// etc.
});
// apply to all requests
app.use(speedLimiter);
app.get("/test", (req, res) => {
// logic
});
app.listen(3000, () => console.log(`App is running`));
Limit Certain Route
We can limit a single route like this:
const rateLimit = require("express-rate-limit");
const testLimiter = rateLimit({
windowMs: 20 * 60 * 1000, // 20 minutes
delayAfter: 70, // 70 requests
delayMs: 500 // adding 500ms delay
});
app.post('/test', testLimiter, (req, res) => {
// logic
});
app.listen(3000, () => console.log(`App is running`));
That’s all. . Thank you. ?
Comment
Preview may take a few seconds to load.
Markdown Basics
Below you will find some common used markdown syntax. For a deeper dive in Markdown check out this Cheat Sheet
Bold & Italic
Italics *asterisks*
Bold **double asterisks**
Code
Inline Code
`backtick`Code Block```
Three back ticks and then enter your code blocks here.
```
Headers
# This is a Heading 1
## This is a Heading 2
### This is a Heading 3
Quotes
> type a greater than sign and start typing your quote.
Links
You can add links by adding text inside of [] and the link inside of (), like so:
Lists
To add a numbered list you can simply start with a number and a ., like so:
1. The first item in my list
For an unordered list, you can add a dash -, like so:
- The start of my list
Images
You can add images by selecting the image icon, which will upload and add an image to the editor, or you can manually add the image by adding an exclamation !, followed by the alt text inside of [], and the image URL inside of (), like so:
Dividers
To add a divider you can add three dashes or three asterisks:
--- or ***

Comments (0)