快速中间件:app.use和app.all

Express middleware: app.use and app.all

本文关键字:app use all 中间件      更新时间:2023-09-26

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

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

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

这两个例子的用法差别很大。在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的文档中找到更多信息。