Skip to content

Commit dca4029

Browse files
committed
add rate limit
1 parent 1990ead commit dca4029

File tree

5 files changed

+41
-0
lines changed

5 files changed

+41
-0
lines changed

node_modules/.package-lock.json

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"cloudinary": "^2.6.1",
1717
"dotenv": "^16.5.0",
1818
"express": "^5.1.0",
19+
"express-rate-limit": "^7.5.0",
1920
"ip": "^2.0.1",
2021
"jsonwebtoken": "^9.0.2",
2122
"mongoose": "^8.15.0",

src/middleware/rateLimit.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { rateLimit } from "express-rate-limit";
2+
3+
export const rateLimiter = rateLimit({
4+
windowMs: 30 * 1000, // 30 seconds,
5+
limit: 5, // each IP can send 5 request per WindowMs
6+
});

src/server.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@ import swaggerJsdoc from "swagger-jsdoc";
66
import swaggerUi from "swagger-ui-express";
77
import { options } from "./utils/swaggerOptions.js";
88
import ip from "ip";
9+
import { rateLimiter } from "./middleware/rateLimit.js";
910

1011
const PORT = 3000;
1112

1213
const swaggerDocs = swaggerJsdoc(options);
1314

1415
const app = express();
1516

17+
// applied rate limiter to all the request
18+
app.use(rateLimiter);
1619
app.use(express.json());
1720
app.use(express.urlencoded({ extended: true }));
1821
app.use("/api", apiRouter);

0 commit comments

Comments
 (0)