无法在中间件内访问 app.use() 的 req.params
can't access req.params of app.use() inside middleware
我正在尝试为我的应用程序构建动态路由。 app.js 中的代码片段如下所示:
app.use('/:c_name/api/',middleware);
中间件看起来像这样:
var router = require('express').Router();
router.get('/:m/:c/:a',(req, res, next) => {
console.log(req.params);
var controller = "./fe-ser/leg/fe/cli/"+req.params.c_name+"/main/process/"+req.params.module+"/controllers/"+req.params.controller;
});
现在解析中间件内部的路由,我需要 c_name
的值,但我无法使用 req.params.c_name
访问它。 req.params
仅包含 m
、c
和 a
。
因此,问题是,如何从我的中间件访问 c_name
?
您需要在初始化 router
时添加 mergeParams
,这将保留 req.params
值
var router = express.Router({mergeParams: true});
希望对您有所帮助!
我正在尝试为我的应用程序构建动态路由。 app.js 中的代码片段如下所示:
app.use('/:c_name/api/',middleware);
中间件看起来像这样:
var router = require('express').Router();
router.get('/:m/:c/:a',(req, res, next) => {
console.log(req.params);
var controller = "./fe-ser/leg/fe/cli/"+req.params.c_name+"/main/process/"+req.params.module+"/controllers/"+req.params.controller;
});
现在解析中间件内部的路由,我需要 c_name
的值,但我无法使用 req.params.c_name
访问它。 req.params
仅包含 m
、c
和 a
。
因此,问题是,如何从我的中间件访问 c_name
?
您需要在初始化 router
时添加 mergeParams
,这将保留 req.params
值
var router = express.Router({mergeParams: true});
希望对您有所帮助!