【问题标题】:Express middleware: app.use and app.allExpress 中间件:app.use 和 app.all
【发布时间】:2013-06-11 23:15:49
【问题描述】:

有没有区别

app.use('/some/path', function(req, res, next() {})

app.all('/some/path', function(req, res, next() {})

它们都是只为 /some/path 请求调用的中间件函数,对吧?

【问题讨论】:

标签: javascript node.js express


【解决方案1】:

这两个例子的用法有很大的不同。使用app.use 注册的函数是通用中间件函数,并根据它们在中间件堆栈上的位置进行调用,通常在app.configure 函数内。这种类型的中间件通常放在之前 app.route,错误处理函数除外。

另一方面,app.all 是一个路由功能(通常不称为中间件),它涵盖了所有 HTTP 方法,并且仅在 内部 app.route 被调用。如果您之前的任何路由函数与/some/path 匹配并且没有调用next 回调,则不会执行app.all,因此app.all 函数通常位于路由块的开头。

还有第三种中间件,用于您的路由功能,例如。

app.get('/some/path', middleware1, middleware2, function(req, res, next) {});

这通常用于限制访问或执行与/some/path 路由相关的一般任务。

对于实际应用,您可以同时使用这两个函数,但请注意 app.use/some/path 使用时的行为差异。与 app.get 不同,app.use 在调用匿名函数之前从路由中剥离 /some/path

您可以在express 的文档中找到更多信息。

【讨论】:

  • 谢谢!很好的解释。
  • Express 3 确实如此,但 Express 4 的处理方式有所不同,现在它们更接近了。
猜你喜欢
  • 2012-12-17
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
相关资源
最近更新 更多