# 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)
← app.on app.delete →