Skip to content

Commit 202a416

Browse files
Nilegfxtypicode
authored andcommitted
update req.query when rewrite without params (typicode#432)
* update req.query when rewrite without params typicode#431 * add tests for rewrite rules with query and without paramas for PR typicode#432 * [typo] add tests for rewrite rules with query and without paramas for PR typicode#432
1 parent 7c402a8 commit 202a416

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

src/server/rewriter.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
const express = require('express')
22
const url = require('url')
33
const _ = require('lodash')
4-
4+
function updateQueryString(target,sourceUrl) {
5+
return !!~sourceUrl.indexOf('?') ? _.assign(target, url.parse(sourceUrl, true).query) : {};
6+
}
57
module.exports = (routes) => {
68
const router = express.Router()
79

@@ -14,16 +16,14 @@ module.exports = (routes) => {
1416
target = target.replace(':' + param, req.params[param])
1517
}
1618
req.url = target
17-
if (target.indexOf('?')) {
18-
// create query from target
19-
_.assign(req.query, url.parse(target, true).query)
20-
}
19+
req.query = updateQueryString(req.query,req.url)
2120
next()
2221
})
2322
} else {
2423
router.all(route + '*', (req, res, next) => {
2524
// Rewrite url by replacing prefix
2625
req.url = req.url.replace(route, routes[route])
26+
req.query = updateQueryString(req.query,req.url)
2727
next()
2828
})
2929
}

test/server/plural.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,9 @@ describe('Server', () => {
7878
server.use(jsonServer.rewriter({
7979
'/api/': '/',
8080
'/blog/posts/:id/show': '/posts/:id',
81-
'/comments/special/:userId-:body': '/comments/?userId=:userId&body=:body'
81+
'/comments/special/:userId-:body': '/comments/?userId=:userId&body=:body',
82+
'/firstpostwithcomments': '/posts/1?_embed=comments'
83+
8284
}))
8385
server.use(router)
8486
})
@@ -686,6 +688,15 @@ describe('Server', () => {
686688
.end(done)
687689
})
688690

691+
it('should rewrite using query without params', function (done) {
692+
const expectedPost = _.cloneDeep(db.posts[0])
693+
expectedPost.comments = [ db.comments[0], db.comments[1] ]
694+
request(server)
695+
.get('/firstpostwithcomments')
696+
.expect(expectedPost)
697+
.end(done)
698+
})
699+
689700
it('should rewrite using params and query', function (done) {
690701
request(server)
691702
.get('/comments/special/1-quux')

0 commit comments

Comments
 (0)