Update rewriter (#580)

This commit is contained in:
typicode
2017-07-05 13:17:10 +02:00
committed by GitHub
parent d5ac11f5ca
commit 21d2fff3a9
7 changed files with 43 additions and 44 deletions

View File

@ -1,11 +1,6 @@
const express = require('express')
const url = require('url')
const _ = require('lodash')
function updateQueryString(target, sourceUrl) {
return ~sourceUrl.indexOf('?')
? _.assign(target, url.parse(sourceUrl, true).query)
: {}
}
const rewrite = require('express-urlrewrite')
module.exports = routes => {
const router = express.Router()
@ -13,26 +8,8 @@ module.exports = routes => {
res.json(routes)
})
Object.keys(routes).forEach(route => {
if (route.indexOf(':') !== -1) {
router.all(route, (req, res, next) => {
// Rewrite target url using params
let target = routes[route]
for (let param in req.params) {
target = target.replace(`:${param}`, req.params[param])
}
req.url = target
req.query = updateQueryString(req.query, req.url)
next()
})
} else {
router.all(`${route}*`, (req, res, next) => {
// Rewrite url by replacing prefix
req.url = req.url.replace(route, routes[route])
req.query = updateQueryString(req.query, req.url)
next()
})
}
Object.keys(routes).forEach(key => {
router.use(rewrite(key, routes[key]))
})
return router