Skip to content

Commit e137852

Browse files
committed
added combined example
depends on to-be-released [email protected], use a local build + npm link to test
1 parent b3af8a7 commit e137852

File tree

4 files changed

+638
-0
lines changed

4 files changed

+638
-0
lines changed

examples/combined-fetch.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// This example has a server and client together - normally they'd be in separate JS files,
2+
// likely on separate devices.
3+
4+
// server
5+
import { default as express} from 'express'
6+
import { rateLimit } from 'express-rate-limit'
7+
const app = express()
8+
9+
app.use(rateLimit({
10+
max: 5,
11+
windowMs: 60*1000, // 1 minute
12+
legacyHeader: false, // X-RateLimit-*
13+
standardHeaders: 'draft-7' // combined RateLimit header
14+
}))
15+
16+
app.get('/', (req, res) => res.send('check headers'));
17+
18+
const {port, server} = await new Promise(resolve => {
19+
const server = app.listen(0, () => resolve({port: server.address().port, server}))
20+
})
21+
22+
23+
// client
24+
import { parseRateLimit } from 'ratelimit-header-parser'
25+
26+
const response = await fetch(`http://localhost:${port}`,)
27+
28+
console.log('RateLimit header:', response.headers.get('RateLimit'))
29+
// > RateLimit header: limit=5, remaining=4, reset=60
30+
console.log('parsed ratelimit:', parseRateLimit(response))
31+
// > parsed ratelimit: { limit: 5, used: 1, remaining: 4, reset: 2023-08-25T04:41:31.546Z }
32+
33+
34+
// cleanup
35+
server.close()
File renamed without changes.

0 commit comments

Comments
 (0)