使用 app.use('/some/path', function(req, res, next() {})
和使用 app.all('/some/path', function(req, res, next() {})
有什么区别呢?它们都是中间件函数,仅对 /some/path 请求进行调用,对吗?
使用 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文档中找到更多信息。