mirror of
https://github.com/typicode/json-server.git
synced 2025-07-30 13:42:11 +08:00
Simplify rewriter
This commit is contained in:
@ -3,17 +3,27 @@ var express = require('express')
|
|||||||
module.exports = function (routes) {
|
module.exports = function (routes) {
|
||||||
var router = express.Router()
|
var router = express.Router()
|
||||||
|
|
||||||
for (var route in routes) {
|
Object.keys(routes).forEach(function (route) {
|
||||||
router.all(route, function (req, res, next) {
|
|
||||||
var target = routes[route]
|
if (route.indexOf(':') !== -1) {
|
||||||
for (var param in req.params) {
|
router.all(route, function (req, res, next) {
|
||||||
target = target.replace(':' + param, req.params[param])
|
// Rewrite target url using params
|
||||||
}
|
var target = routes[route]
|
||||||
console.log(target)
|
for (var param in req.params) {
|
||||||
req.url = target
|
target = target.replace(':' + param, req.params[param])
|
||||||
next()
|
}
|
||||||
})
|
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
|
return router
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ describe('Server', function () {
|
|||||||
router = jsonServer.router(db)
|
router = jsonServer.router(db)
|
||||||
server.use(jsonServer.defaults)
|
server.use(jsonServer.defaults)
|
||||||
server.use(jsonServer.rewriter({
|
server.use(jsonServer.rewriter({
|
||||||
'/api/:resource/:id': '/:resource/:id',
|
'/api/': '/',
|
||||||
'/blog/posts/:id/show': '/posts/:id'
|
'/blog/posts/:id/show': '/posts/:id'
|
||||||
}))
|
}))
|
||||||
server.use(router)
|
server.use(router)
|
||||||
@ -370,14 +370,14 @@ describe('Server', function () {
|
|||||||
|
|
||||||
describe('Rewriter', function () {
|
describe('Rewriter', function () {
|
||||||
|
|
||||||
it('should rewrite URL (1)', function (done) {
|
it('should rewrite using prefix', function (done) {
|
||||||
request(server)
|
request(server)
|
||||||
.get('/api/posts/1')
|
.get('/api/posts/1')
|
||||||
.expect(db.posts[0])
|
.expect(db.posts[0])
|
||||||
.end(done)
|
.end(done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should rewrite URL (2)', function (done) {
|
it('should rewrite using params', function (done) {
|
||||||
request(server)
|
request(server)
|
||||||
.get('/blog/posts/1/show')
|
.get('/blog/posts/1/show')
|
||||||
.expect(db.posts[0])
|
.expect(db.posts[0])
|
||||||
|
Reference in New Issue
Block a user