2
2
3
3
const http = require ( 'node:http' ) ;
4
4
5
+ const PORT = 8000 ;
5
6
const user = { name : 'jura' , age : 22 } ;
6
7
7
8
const routing = {
8
9
'/' : 'welcome to homepage' ,
9
10
'/user' : user ,
10
11
'/user/name' : ( ) => user . name ,
11
12
'/user/age' : ( ) => user . age ,
12
- '/user/*' : ( client , par ) => 'parameter=' + par [ 0 ] ,
13
+ '/user/*' : ( client , params ) => 'parameter=' + params [ 0 ] ,
13
14
} ;
14
15
15
16
const types = {
16
17
object : JSON . stringify ,
17
18
string : ( s ) => s ,
18
19
number : ( n ) => n + '' ,
19
20
undefined : ( ) => 'not found' ,
20
- function : ( fn , par , client ) => fn ( client , par ) ,
21
+ function : ( fn , params , client ) => fn ( client , params ) ,
21
22
} ;
22
23
23
24
const matching = [ ] ;
@@ -31,24 +32,26 @@ for (const key in routing) {
31
32
}
32
33
33
34
const router = ( client ) => {
34
- let par ;
35
- let route = routing [ client . req . url ] ;
35
+ const { req : { url } } = client ;
36
+ let route = routing [ url ] ;
37
+ const params = [ ] ;
36
38
if ( ! route ) {
37
- for ( let i = 0 ; i < matching . length ; i ++ ) {
38
- const rx = matching [ i ] ;
39
- par = client . req . url . match ( rx [ 0 ] ) ;
40
- if ( par ) {
41
- par . shift ( ) ;
39
+ for ( const rx of matching ) {
40
+ params = url . match ( rx [ 0 ] ) ;
41
+ if ( params ) {
42
+ params . shift ( ) ;
42
43
route = rx [ 1 ] ;
43
44
break ;
44
45
}
45
46
}
46
47
}
47
48
const type = typeof route ;
48
49
const renderer = types [ type ] ;
49
- return renderer ( route , par , client ) ;
50
+ return renderer ( route , params , client ) ;
50
51
} ;
51
52
52
53
http . createServer ( ( req , res ) => {
53
- res . end ( router ( { req, res } ) + '' ) ;
54
- } ) . listen ( 8000 ) ;
54
+ res . end ( `${ router ( { req, res } ) } ` ) ;
55
+ } ) . listen ( PORT ) ;
56
+
57
+ console . log ( `Running server on port ${ PORT } ` )
0 commit comments