mirror of
https://github.com/typicode/json-server.git
synced 2025-07-29 21:23:41 +08:00
Update rewriter (#580)
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user