在Express中分组路线

我们可以在Laravel这样分组我们的路线:

Route::group("admin", ["middleware" => ["isAdmin"]], function () { Route::get("/", "AdminController@index"); Route::post("/post", ["middleware" => "csrf", "uses" => "AdminController@index"); }); 

基本上,pipe理员组中定义的所有路由将自动获取isAdmin中间件和组名称。 例如, post端点监听admin/post not /post

Express有没有办法做同样的事情? 这将是真棒,因为我的Laravel路线曾经是如此干净,而我的快车路线有点混乱/重复。

这是我目前在Express上的routes.js。

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

谢谢。

你可以使用app.use()https://expressjs.com/zh/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

只要在你想要做的每个小组之前使用:

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