Node.js Express中间件:app.param vs app.use

时间:2014-11-21 03:55:55

标签: node.js express

在Express中间件内部的调用链中,app.param方法是否总是在app.use之前被调用?

2 个答案:

答案 0 :(得分:4)

我使用此程序测试,使用快速4.10.2更改app.useapp.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中,所有内容都按照您在设置应用时声明的顺序进行调用。