# app.all

此方法类似于标准 app.METHOD() 方法,不同之处在于它匹配所有 HTTP 动词。

# 概要

app.all(path, callback [, callback ...])

# 描述

此方法类似于标准 app.METHOD() 方法,不同之处在于它匹配所有 HTTP 动词。

# 参数

参数 描述 默认
path 调用中间件函数的路径;可以是以下任何一种:表示路径的字符串。 路径模式。 匹配路径的正则表达式模式。 以上任何一种组合的数组。例如,参见 路径示例。 '/'(根路径)
callback 回调函数;可以是:一个中间件函数。 一系列中间件函数(以逗号分隔)。 一组中间件函数。 以上所有的组合。您可以提供多个回调函数,其行为类似于中间件,只是这些回调可以调用 next('route') 以绕过剩余的路由回调。您可以使用此机制对路由施加先决条件,然后如果没有理由继续当前路由,则将控制权传递给后续路由。当回调函数抛出错误或返回被拒绝的 Promise 时,next(err) 将被自动调用。由于 router 和 app 实现了中间件接口,您可以像使用任何其他中间件函数一样使用它们。例如,参见 中间件回调函数示例。

# 示例

无论使用 GET、POST、PUT、DELETE 还是任何其他 HTTP 请求方法,对 /secret的请求都会执行以下回调:

app.all('/secret', (req, res, next) => {
  console.log('Accessing the secret section ...')
  next() // pass control to the next handler
})

app.all() 方法对于为特定路径前缀或任意匹配映射 "global" 逻辑很有用。例如,如果您将以下内容放在所有其他路由定义的顶部,则要求从该点开始的所有路由都需要身份验证,并自动加载用户。请记住,这些回调不必充当端点:loadUser 可以执行任务,然后调用 next() 以继续匹配后续路由。

app.all('*', requireAuthentication, loadUser)

或等价物:

app.all('*', requireAuthentication)
app.all('*', loadUser)

另一个示例是列入白名单的 "global" 功能。该示例与上面的示例类似,但它仅限制以 "/api" 开头的路径:

app.all('/api/*', requireAuthentication)
Last Updated: 6/17/2023, 6:57:19 PM