Skip to content

Commit b06bc27

Browse files
ashleahhilltypicode
authored andcommitted
Add support for query params in rewrite targets (typicode#373)
* Add support for query params in rewrite targets Re-parse the rewrite target to add query params, fixes typicode#372 * Use lodash for Object.assign for node v0.12 compatibility
1 parent e547381 commit b06bc27

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/server/rewriter.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
var express = require('express')
2+
var url = require('url')
3+
var _ = require('lodash')
24

35
module.exports = function (routes) {
46
var router = express.Router()
@@ -12,6 +14,10 @@ module.exports = function (routes) {
1214
target = target.replace(':' + param, req.params[param])
1315
}
1416
req.url = target
17+
if (target.indexOf('?')) {
18+
// create query from target
19+
_.assign(req.query, url.parse(target, true).query)
20+
}
1521
next()
1622
})
1723
} else {

test/server/plural.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ describe('Server', function () {
7474
server.use(jsonServer.defaults())
7575
server.use(jsonServer.rewriter({
7676
'/api/': '/',
77-
'/blog/posts/:id/show': '/posts/:id'
77+
'/blog/posts/:id/show': '/posts/:id',
78+
'/comments/special/:userId-:body': '/comments/?userId=:userId&body=:body'
7879
}))
7980
server.use(router)
8081
})
@@ -647,6 +648,13 @@ describe('Server', function () {
647648
.expect(db.posts[0])
648649
.end(done)
649650
})
651+
652+
it('should rewrite using params and query', function (done) {
653+
request(server)
654+
.get('/comments/special/1-quux')
655+
.expect([db.comments[4]])
656+
.end(done)
657+
})
650658
})
651659

652660
describe('router.render', function (done) {

0 commit comments

Comments
 (0)