File tree Expand file tree Collapse file tree 2 files changed +68
-0
lines changed
Expand file tree Collapse file tree 2 files changed +68
-0
lines changed Original file line number Diff line number Diff line change 1+ 'use strict' ;
2+
3+ const http = require ( 'http' ) ;
4+
5+ const ajax = ( base , methods ) => {
6+ const api = { } ;
7+ for ( const method of methods ) {
8+ api [ method ] = ( ...args ) => {
9+ const callback = args . pop ( ) ;
10+ const url = base + method + '/' + args . join ( '/' ) ;
11+ console . log ( url ) ;
12+ http . get ( url , res => {
13+ if ( res . statusCode !== 200 ) {
14+ callback ( new Error ( `Status Code: ${ res . statusCode } ` ) ) ;
15+ return ;
16+ }
17+ const lines = [ ] ;
18+ res . on ( 'data' , chunk => lines . push ( chunk ) ) ;
19+ res . on ( 'end' , ( ) => callback ( null , JSON . parse ( lines . join ( ) ) ) ) ;
20+ } ) ;
21+ } ;
22+ }
23+ return api ;
24+ } ;
25+
26+ // Usage
27+
28+ const api = ajax (
29+ 'http://localhost:8000/api/' ,
30+ [ 'user' , 'userBorn' ]
31+ ) ;
32+
33+ api . user ( 'marcus' , ( err , data ) => {
34+ if ( err ) throw err ;
35+ console . dir ( { data } ) ;
36+ } ) ;
37+
38+ api . userBorn ( 'mao' , ( err , data ) => {
39+ if ( err ) throw err ;
40+ console . dir ( { data } ) ;
41+ } ) ;
Original file line number Diff line number Diff line change 1+ 'use strict' ;
2+
3+ const http = require ( 'http' ) ;
4+
5+ const users = {
6+ marcus : { name : 'Marcus Aurelius' , city : 'Rome' , born : 121 } ,
7+ mao : { name : 'Mao Zedong' , city : 'Shaoshan' , born : 1893 } ,
8+ } ;
9+
10+ const routing = {
11+ '/api/user/' : name => users [ name ] ,
12+ '/api/userBorn/' : name => users [ name ] . born
13+ } ;
14+
15+ const types = {
16+ object : o => JSON . stringify ( o ) ,
17+ undefined : ( ) => '{"error":"not found"}' ,
18+ function : ( fn , req , res ) => JSON . stringify ( fn ( req , res ) )
19+ } ;
20+
21+ http . createServer ( ( req , res ) => {
22+ const data = routing [ req . url ] ;
23+ const type = typeof ( data ) ;
24+ const serializer = types [ type ] ;
25+ const result = serializer ( data , req , res ) ;
26+ res . end ( result ) ;
27+ } ) . listen ( 8000 ) ;
You can’t perform that action at this time.
0 commit comments