我在快递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,但我想确保这实际上是必需的。
答案 0 :(得分:0)
所以这并不像我原先预期的那样特别容易。但是,我只是通过重新构建我的buildRoutes方法来接受baseURL和路由器参数来避免整个问题。现在我说,profileController.buildRoutes('/api/profiles/', router)
反过来调用commentController.buildRoutes('/api/profiles/:profileID/comments', router)
,而不是完全模块化,等等。
它不是非常令人满意(我宁愿封装路径/路由信息并将其隐藏在控制器中)但它可以工作。