File tree Expand file tree Collapse file tree 4 files changed +38
-2
lines changed Expand file tree Collapse file tree 4 files changed +38
-2
lines changed Original file line number Diff line number Diff line change @@ -9,7 +9,12 @@ gateway({
9
9
10
10
routes : [ {
11
11
prefix : '/public' ,
12
- target : 'http://public.myapp:300'
12
+ target : 'http://public.myapp:300' ,
13
+ docs : {
14
+ name : 'Public Service' ,
15
+ endpoint : 'swagger.json' ,
16
+ type : 'swagger'
17
+ }
13
18
} , {
14
19
prefix : '/admin' ,
15
20
target : 'http://admin.myapp:3000' ,
Original file line number Diff line number Diff line change @@ -18,6 +18,16 @@ const gateway = (opts) => {
18
18
server . use ( middleware )
19
19
} )
20
20
21
+ // registering services.json
22
+ const services = opts . routes . map ( route => ( {
23
+ prefix : route . prefix ,
24
+ docs : route . docs
25
+ } ) )
26
+ server . get ( '/services.json' , ( req , res ) => {
27
+ res . send ( services )
28
+ } )
29
+
30
+ // processing routes
21
31
opts . routes . forEach ( route => {
22
32
if ( undefined === route . prefixRewrite ) {
23
33
route . prefixRewrite = ''
Original file line number Diff line number Diff line change @@ -23,7 +23,12 @@ module.exports = async () => {
23
23
}
24
24
} , {
25
25
prefix : '/users' ,
26
- target : 'http://localhost:3000'
26
+ target : 'http://localhost:3000' ,
27
+ docs : {
28
+ name : 'Users Service' ,
29
+ endpoint : 'swagger.json' ,
30
+ type : 'swagger'
31
+ }
27
32
} , {
28
33
prefix : '/users/proxy-aborted' ,
29
34
target : 'http://localhost:5000' ,
Original file line number Diff line number Diff line change @@ -47,6 +47,22 @@ describe('API Gateway', () => {
47
47
await remote . start ( 3000 )
48
48
} )
49
49
50
+ it ( 'services.json contains registered services' , async ( ) => {
51
+ await request ( gateway )
52
+ . get ( '/services.json' )
53
+ . expect ( 200 )
54
+ . then ( ( response ) => {
55
+ expect ( response . body . find ( service => service . prefix === '/users' ) ) . to . deep . equal ( {
56
+ prefix : '/users' ,
57
+ docs : {
58
+ name : 'Users Service' ,
59
+ endpoint : 'swagger.json' ,
60
+ type : 'swagger'
61
+ }
62
+ } )
63
+ } )
64
+ } )
65
+
50
66
it ( 'remote is proxied /users/response-time/204 - 204' , async ( ) => {
51
67
await request ( gateway )
52
68
. post ( '/users/response-time/204' )
You can’t perform that action at this time.
0 commit comments