2016-08-11 71 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', ...