如何使用:父路线中的通配符?

时间:2014-03-22 21:58:20

标签: express

我在快递4.0(rc3)中构建了一个快速应用程序,因为我从头开始并且在开发中有一段时间,但是如果在3.0中有这样的方法,那么&# #39;欢迎你。

我想要的是一组评论REST路由,我可以将其附加到我的API中的其他路由。所以:

/帖/:帖子ID /评论/:commentID /简档/:配置文件ID /评论/:commentID

这样做的方式是将注释路由封装到模块中,包括模块中的buildRoutes(路由器)功能。

然后我可以在我的主服务器定义中执行app.use('/api/comments', commentController.buildRoutes(express.Router())),然后在我的个人资料模块buildRoutes(router)中,我可以做

buildRoutes = function(profileRouter)
.... build the basic CRUD routes ...
profileRouter.get('/:profileID', show)
profileRouter.use('/:profileID', commentController.buildRoutes(express.Router()))

似乎只有.VERB方法实际上取代了:路由中的通配符,而不是.use。我总是可以使用/ api / profiles / *上的一个自定义中间件,并将相应的URL参数映射到req.fields,但我想确保这实际上是必需的。

1 个答案:

答案 0 :(得分:0)

所以这并不像我原先预期的那样特别容易。但是,我只是通过重新构建我的buildRoutes方法来接受baseURL和路由器参数来避免整个问题。现在我说,profileController.buildRoutes('/api/profiles/', router)反过来调用commentController.buildRoutes('/api/profiles/:profileID/comments', router),而不是完全模块化,等等。

它不是非常令人满意(我宁愿封装路径/路由信息并将其隐藏在控制器中)但它可以工作。