2
2
// likely on separate devices.
3
3
4
4
// server
5
- import { default as express } from 'express'
6
- import { rateLimit } from 'express-rate-limit'
5
+ import { default as express } from 'express'
6
+ import { rateLimit } from 'express-rate-limit'
7
7
const app = express ( )
8
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} ) )
9
+ app . use (
10
+ rateLimit ( {
11
+ max : 5 ,
12
+ windowMs : 60 * 1000 , // 1 minute
13
+ legacyHeader : false , // X-RateLimit-*
14
+ standardHeaders : 'draft-7' , // combined RateLimit header
15
+ } ) ,
16
+ )
17
+
18
+ app . get ( '/' , ( req , res ) => res . send ( 'check headers' ) )
19
+
20
+ const { port, server } = await new Promise ( ( resolve ) => {
21
+ const server = app . listen ( 0 , ( ) =>
22
+ resolve ( { port : server . address ( ) . port , server } ) ,
23
+ )
20
24
} )
21
25
22
-
23
26
// client
24
27
import { parseRateLimit } from 'ratelimit-header-parser'
25
28
26
- const response = await fetch ( `http://localhost:${ port } ` , )
29
+ const response = await fetch ( `http://localhost:${ port } ` )
27
30
28
31
console . log ( 'RateLimit header:' , response . headers . get ( 'RateLimit' ) )
29
32
// > RateLimit header: limit=5, remaining=4, reset=60
30
33
console . log ( 'parsed ratelimit:' , parseRateLimit ( response ) )
31
34
// > parsed ratelimit: { limit: 5, used: 1, remaining: 4, reset: 2023-08-25T04:41:31.546Z }
32
35
33
-
34
36
// cleanup
35
- server . close ( )
37
+ server . close ( )
0 commit comments