我有网址:
app.get('/api/v1.0/m/:vipId', descM);
和这样的函数:
function descM(req, res) {
accesslogger.info("bbbbbbbbbbbbbbbb");
accesslogger.warn('req',req.params);
var vipId = req.params.vipId;
var tenantId = req.get('X-Product-Id');
......}
我写了一个过滤器来处理params:
function loggerFilter(req, res, next) {
logger.warn('==================');
logger.warn("req",req.params);
...... (handle)
}
但这两个函数的输出不同:
[2015-08-02 14:40:16.857] [WARN] access-log - [xxxx] ==================
[015-08-02 14:40:16.859] [WARN] access-log - [xxxxx] req {}
[2015-08-02 14:40:16.866] [INFO] access-log - [xxxxxx] bbbbbbbbbbbbbbbb
[2015-08-02 14:40:16.868] [WARN] access-log - [xxxxxx] req { vipId: 'fec1209c-30b7-4a19-9f78-0785cacd78b9' }
路由param应该可以进入过滤器,但是示例显示param不在,只在函数中? 我怎样才能在过滤器中获得用于路径参数的参数
答案 0 :(得分:0)
这不适用于Express 4:中间件无法访问req.params
(请参阅this)。
有各种解决方案:
app.route('/api/v1.0/m/:vipId')
.all(loggerFilter)
.get(descM);
或者:
app.get('/api/v1.0/m/:vipId', loggerFilter, descM);