在Express中间件内部的调用链中,app.param方法是否总是在app.use之前被调用?
答案 0 :(得分:4)
我使用此程序测试,使用快速4.10.2更改app.use
与app.param
的顺序。 param总是首先运行,这是有道理的,因为路由处理程序期望能够执行req.params.foo
并且为了使其工作,param处理程序需要运行。
var express = require('express');
var app = express();
app.use("/:file", function (req, res) {
console.log("@bug route", req.params.file);
res.send();
});
app.param("file", function (req, res, next, val) {
console.log("@bug param", val);
next();
});
app.listen(3003);
运行此命令并使用curl localhost:3003/foo
进行测试,您将获得输出:
@bug param foo
@bug route foo
答案 1 :(得分:2)
您可以通过记录来测试它,但我确定在4.0中,所有内容都按照您在设置应用时声明的顺序进行调用。