目前正在开发nodejs express服务器。而且我认为我正在以低效的方式做事。我已设置此路线
app.get('/admin/scanTable/:table', require('./AUTH/ValidateCookie.js'), require('./AUTH/verifyURI.js'), require('./ROUTES/render.js'));
所以这里的url是/ admin / scanTable /:table。我知道我可以通过req.route.path获得整个路径。我知道我可以使用req.params.table来收集表参数。但我不知道如何获得的是路径的第一部分,在本例中为 admin 。我知道我可以通过查找/符号和从req.route.path切割我需要的部分来获得它,但我想到了所有这些表达的功能,可能有更好的方法来做到这一点。 我知道我可以使用
app.use('/admin', function(req, res, next){console.log('admin called'), next();});
检查uri的这部分是否被调用然后执行一些代码,但这不是我想要的。谁能告诉我找到这个最简单的方法?目前,每当调用app.use('/admin'
时,我都会将变量附加到req.string,它会将字符串admin附加到此变量,然后使其可用于所有其他被调用的函数。但即使这样也有点矫枉过正。任何想法?
答案 0 :(得分:1)
您描述的两个选项都是有效且直截了当的:
在req.route.path
上使用正则表达式,la /^admin/.test(req.route.path)
使用中间件将新属性附加到req对象,la
app.use('/admin', function(req, res, next){ req.adminRoute = true; next();});
或者如果您需要为所有管理路由执行相同的操作,请执行一次:
var adminRouter = require("express").Router();
router.get("/scanTable/:table", require("./AUTH/ValidateCookie.js"), ...);
router.use(function (req, res, next) { req.adminRoute = true; next(); }));
app.use("/admin", adminRouter);
我不知道您的应用程序的上下文,但我会考虑使用最后一个示例,并将其他任何特定于/ admin路由的内容作为中间件。