我想隔离一段代码来检查每个请求req.params或者req.body每个请求所需的值.我发现的是,如果我在此之前尝试访问这些值,app.use(app.router)则尚未解析请求以包含这些对象.如果我尝试插入中间件, app.use(app.router)那么它会一起跳过.
我可以在一个地方处理这些值,以便下游路径和模型可以使用这些工作吗?
mik*_*mes 15
只需对每条路线内联运行中间件,
const middleware = (req, res, next) => {
console.log(req.params.id);
next();
};
app.get('/test/:id', middleware, (req, res) => {
res.send('hi');
});
Run Code Online (Sandbox Code Playgroud)
Cth*_*ood 11
你无法做你想做的事. https://github.com/strongloop/express/issues/2088非常清楚地解释了这一点.
我一直试图做你想做的事情一段时间,没有成功.我终于在github中找到了这个问题.
sgr*_*454 -1
您可以简单地添加一个通配符路由,该路由始终在其他路由之前运行,然后检查其中的参数,而不是尝试通过自定义中间件来执行此操作:
app.get('/*', function(req, res, next) {
if (req.param('foo')) {
// Do something
return next(); // or return res.send(403, 'no way!'), or whatever.
}
return next();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10935 次 |
| 最近记录: |