diff --git a/src/rewriter.js b/src/rewriter.js index 846605e..da80b51 100644 --- a/src/rewriter.js +++ b/src/rewriter.js @@ -3,17 +3,27 @@ var express = require('express') module.exports = function (routes) { var router = express.Router() - for (var route in routes) { - router.all(route, function (req, res, next) { - var target = routes[route] - for (var param in req.params) { - target = target.replace(':' + param, req.params[param]) - } - console.log(target) - req.url = target - next() - }) - } + Object.keys(routes).forEach(function (route) { + + if (route.indexOf(':') !== -1) { + router.all(route, function (req, res, next) { + // Rewrite target url using params + var target = routes[route] + for (var param in req.params) { + target = target.replace(':' + param, req.params[param]) + } + req.url = target + next() + }) + } else { + router.all(route + '*', function (req, res, next) { + // Rewrite url by replacing prefix + req.url = req.url.replace(route, routes[route]) + next() + }) + } + + }) return router } diff --git a/test/index.js b/test/index.js index e793e8a..098c964 100644 --- a/test/index.js +++ b/test/index.js @@ -40,7 +40,7 @@ describe('Server', function () { router = jsonServer.router(db) server.use(jsonServer.defaults) server.use(jsonServer.rewriter({ - '/api/:resource/:id': '/:resource/:id', + '/api/': '/', '/blog/posts/:id/show': '/posts/:id' })) server.use(router) @@ -370,14 +370,14 @@ describe('Server', function () { describe('Rewriter', function () { - it('should rewrite URL (1)', function (done) { + it('should rewrite using prefix', function (done) { request(server) .get('/api/posts/1') .expect(db.posts[0]) .end(done) }) - it('should rewrite URL (2)', function (done) { + it('should rewrite using params', function (done) { request(server) .get('/blog/posts/1/show') .expect(db.posts[0])