2016-08-11 40 views
5

我们可以把我们的路线是这样的Laravel:分组航线快递

Route::group("admin", ["middleware" => ["isAdmin"]], function() { 

    Route::get("/", "[email protected]"); 
    Route::post("/post", ["middleware" => "csrf", "uses" => "[email protected]"); 

}); 

基本上,在管理员组中定义的所有路由自动获取isAdmin中间件和组名。例如,post端点侦听admin/post不是/post

有什么办法可以用Express做同样的事情吗?这将是非常棒的,因为我的Laravel路线曾经很干净,而我的Express路线有点混乱/重复。

这是我在Express上的routes.js。

app.get("/admin", [passportConfig.isAuthenticated, passportConfig.isAdmin], AdminController.index); 
app.post("/admin", [passportConfig.isAuthenticated, passportConfig.isAdmin], AdminController.postIndex); 

谢谢。

+0

您使用的是什么版本的快递 – Alex

+0

HTTP:/ /expressjs.com/en/4x/api.html#router – robertklep

+0

@Alex版本4 – Aris

回答

4

您可以使用app.use() - https://expressjs.com/en/guide/using-middleware.html#middleware.application

app.use("/admin",[passportConfig.isAuthenticated, passportConfig.isAdmin],AdminController) 


// AdminController: 
var express = require('express'); 
var router = express.Router(); 
router.get('/', AdminController.index); 
// etc... 
module.exports = router 

https://expressjs.com/en/guide/routing.html#express-router

+0

我需要定义为每个端点分开路由器实例?例如var router2 for/moderator,例如?另外,我可以像http://pastebin.com/Pj3vFdGq这样关闭它,这样可以正确缩进/封闭封闭吗? – Aris

3

各组的前只需要用你想做的事:

app.use('/admin', AdminMiddleware); 
app.get('/admin/route1', ... 
app.get('/admin/route2', ... 

app.use('/user', UserMiddleware); 
app.get('/user/route1', ... 
app.get('/user/route2', ...