表示路由器参数 – 链接URL

我在Express中定义了一个完整的CRUD API,我想删除基础的重复并使用时髦的routefunction,但是我担心这是不可能的。

当前:

 var router = express.Router(); var base = '/api/foo/bar/'; router.get(base, this.list); router.get(base + ':id', this.read); router.post(base, this.create); router.put(base + :id', this.update); router.del(base + :id', this.del); 

期望:

 var router = express.Router(); router.route('/api/foo/bar') .get(this.list) .get(':id', this.read) .post(this.create) .put(':id', this.update) .del(':id', this.del) 

问题是动词函数(get,post,put,del)不接受一个string作为他们的第一个参数。

有没有类似的方法来实现这一目标?

重要的是:使用这种技术是可行的,但是我们知道,从Express 4.3.2开始,在嵌套路由器上定义的所有子路由将不能访问在其之外定义的req.params ,也不能访问param中间件。 这是完全隔离的。 但是,这在以后的4X版本中可能会发生变化。 有关更多(最新)信息,请参阅https://github.com/visionmedia/express/issues/2151


如何呢,而不是:

 // api.js var router = express.Router(); router .route('/') .get(this.list) .post(this.create); router .route('/:id') .get(this.read) .put(this.update) .del(this.del); module.exports = router; // app.js / main.js app.use('/api/foo/bar', require('./api')); 

或者如果你想一下链接所有的人:

 // api.js var router = express.Router(); router .get('/', this.list) .get('/:id', this.read) .post('/', this.create) .put('/:id', this.update) .del('/:id', this.del); module.exports = router; // app.js / main.js app.use('/api/foo/bar', require('./api'));