在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
只要在你想要做的每个小组之前使用:
app.use('/admin', AdminMiddleware); app.get('/admin/route1', ... app.get('/admin/route2', ... app.use('/user', UserMiddleware); app.get('/user/route1', ... app.get('/user/route2', ...