2016-08-11 4 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 были такими чистыми, в то время как мои экспресс-маршруты немного беспорядочны/дублированы.

Это мой route.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 Version 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 для/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', ... 
Смежные вопросы