File tree Expand file tree Collapse file tree 2 files changed +24
-14
lines changed Expand file tree Collapse file tree 2 files changed +24
-14
lines changed Original file line number Diff line number Diff line change @@ -3,17 +3,27 @@ var express = require('express')
33module . exports = function ( routes ) {
44 var router = express . Router ( )
55
6- for ( var route in routes ) {
7- router . all ( route , function ( req , res , next ) {
8- var target = routes [ route ]
9- for ( var param in req . params ) {
10- target = target . replace ( ':' + param , req . params [ param ] )
11- }
12- console . log ( target )
13- req . url = target
14- next ( )
15- } )
16- }
6+ Object . keys ( routes ) . forEach ( function ( route ) {
7+
8+ if ( route . indexOf ( ':' ) !== - 1 ) {
9+ router . all ( route , function ( req , res , next ) {
10+ // Rewrite target url using params
11+ var target = routes [ route ]
12+ for ( var param in req . params ) {
13+ target = target . replace ( ':' + param , req . params [ param ] )
14+ }
15+ req . url = target
16+ next ( )
17+ } )
18+ } else {
19+ router . all ( route + '*' , function ( req , res , next ) {
20+ // Rewrite url by replacing prefix
21+ req . url = req . url . replace ( route , routes [ route ] )
22+ next ( )
23+ } )
24+ }
25+
26+ } )
1727
1828 return router
1929}
Original file line number Diff line number Diff line change @@ -40,7 +40,7 @@ describe('Server', function () {
4040 router = jsonServer . router ( db )
4141 server . use ( jsonServer . defaults )
4242 server . use ( jsonServer . rewriter ( {
43- '/api/:resource/:id ' : '/:resource/:id ' ,
43+ '/api/' : '/' ,
4444 '/blog/posts/:id/show' : '/posts/:id'
4545 } ) )
4646 server . use ( router )
@@ -370,14 +370,14 @@ describe('Server', function () {
370370
371371 describe ( 'Rewriter' , function ( ) {
372372
373- it ( 'should rewrite URL (1) ' , function ( done ) {
373+ it ( 'should rewrite using prefix ' , function ( done ) {
374374 request ( server )
375375 . get ( '/api/posts/1' )
376376 . expect ( db . posts [ 0 ] )
377377 . end ( done )
378378 } )
379379
380- it ( 'should rewrite URL (2) ' , function ( done ) {
380+ it ( 'should rewrite using params ' , function ( done ) {
381381 request ( server )
382382 . get ( '/blog/posts/1/show' )
383383 . expect ( db . posts [ 0 ] )
You can’t perform that action at this time.
0 commit comments