我有URL:
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');
......}我写了一个过滤器来处理参数:
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' }路由参数应该可以进入过滤器,但示例显示参数不在,只在函数中??如何在路由器参数的过滤器中获取参数
发布于 2015-08-02 16:07:15
这在Express4中是行不通的:中间件不能访问req.params (参见this)。
有多种解决方案:
app.route('/api/v1.0/m/:vipId')
.all(loggerFilter)
.get(descM);或者:
app.get('/api/v1.0/m/:vipId', loggerFilter, descM);https://stackoverflow.com/questions/31769443
复制相似问题