Skip to content

Commit cd8f223

Browse files
committed
adding rates limiter example
1 parent 15a447d commit cd8f223

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

demos/rate-limit.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
const gateway = require('../index')
2+
const rateLimit = require('express-rate-limit')
3+
const requestIp = require('request-ip')
4+
5+
gateway({
6+
middlewares: [
7+
// acquire request IP
8+
(req, res, next) => {
9+
req.ip = requestIp.getClientIp(req)
10+
return next()
11+
},
12+
// rate limiter
13+
rateLimit({
14+
windowMs: 1 * 60 * 1000, // 1 minutes
15+
max: 60, // limit each IP to 60 requests per windowMs
16+
handler: (req, res) => {
17+
res.send('Too many requests, please try again later.', 429)
18+
}
19+
})
20+
],
21+
routes: [{
22+
prefix: '/public',
23+
target: 'http://localhost:3000'
24+
}]
25+
}).start(8080).then(() => console.log('API Gateway listening on 8080 port!'))
26+
27+
const service = require('restana')({})
28+
service
29+
.get('/hi', (req, res) => res.send('Hello World!'))
30+
.start(3000).then(() => console.log('Public service listening on 3000 port!'))

package-lock.json

Lines changed: 21 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: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,12 @@
3535
"chai": "^4.2.0",
3636
"cors": "^2.8.5",
3737
"express-jwt": "^5.3.1",
38+
"express-rate-limit": "^5.0.0",
3839
"helmet": "^3.21.2",
3940
"mocha": "^6.2.2",
4041
"nyc": "^14.1.1",
4142
"opossum": "^4.2.1",
43+
"request-ip": "^2.1.3",
4244
"response-time": "^2.3.2",
4345
"standard": "^14.3.1",
4446
"supertest": "^4.0.2"

0 commit comments

Comments
 (0)