- 服务器 Server
- server([options])
- Server options
- 服务器属性 Server properties
- server.auth.default(options)
- server.auth.scheme(name, scheme)
- server.auth.strategy(name, scheme, [options])
- await server.auth.test(strategy, request)
- await server.auth.verify(request)
- server.bind(context)
- server.cache(options)
- await server.cache.provision(options)
- server.control(server)
- server.decoder(encoding, decoder)
- server.decorate(type, property, method, [options])
- server.dependency(dependencies, [after])
- server.encoder(encoding, encoder)
- server.event(events)
- await server.events.emit(criteria, data)
- server.events.on(criteria, listener)
- server.events.once(criteria, listener)
- await server.events.once(criteria)
- server.expose(key, value)
- server.expose(obj)
- server.ext(events)
- server.ext(event, method, [options])
- await server.initialize()
- await server.inject(options)
- server.log(tags, [data, [timestamp]])
- server.lookup(id)
- server.match(method, path, [host])
- server.method(name, method, [options])
- server.method(methods)
- server.path(relativeTo)
- await server.register(plugins, [options])
- server.route(route)
- server.rules(processor, [options])
- await server.start()
- server.state(name, [options])
- server.states.add(name, [options])
- await server.states.format(cookies)
- await server.states.parse(header)
- await server.stop([options])
- server.table([host])
- Route options
- route.options.app
- route.options.auth
- route.options.bind
- route.options.cache
- route.options.compression
- route.options.cors
- route.options.description
- route.options.ext
- route.options.files
- route.options.handler
- route.options.id
- route.options.isInternal
- route.options.json
- route.options.jsonp
- route.options.log
- route.options.notes
- route.options.payload
- route.options.plugins
- route.options.pre
- route.options.response
- route.options.rules
- route.options.security
- route.options.state
- route.options.tags
- route.options.timeout
- route.options.validate
- Request lifecycle
- 请求
- 插件
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Request lifecycle
每个传入请求都会通过请求生命周期。 具体步骤因服务器和路由配置而异, 但执行适用步骤的顺序始终相同。 以下是请求可以执行的完整步骤列表:
onRequest
- 通常当
onRequest
扩展存在时被调用。 - 请求路径和方法可以通过
request.setUrl()
和request.setMethod()
方法修改. 对请求路径或方法的更改将影响请求的路由方式,并可用于重写规则。 request.route
是未分配的。request.url
如果传入的请求路径无效,可能是null
。request.path
可能是无效的路由- 从扩展点返回的任何响应都会忽略 JSONP 配置,因为尚未匹配任何路由且 JSONP 配置不可用。
- 通常当
Route lookup
- 基于
request.path
和request.method
的查找。 - 如果没有找到路由或路径违反 HTTP 规范, 跳到 onPreResponse。
- 基于
JSONP processing
- 基于路由的
jsonp
选项. - 从
request.query
解析 JSON 参数. - 当错误时,跳到 Response validation 。
- 基于路由的
Cookies processing
- 基于路由的
state
选项. - 基于
failAction
的错误处理。
- 基于路由的
onPreAuth
- 无论是否执行认证,都会调用。
Authentication
- 基于路由的
auth
选项.
- 基于路由的
Payload processing
- 基于路由的
payload
选项. - 基于
failAction
的错误处理。
- 基于路由的
Payload authentication
- 基于路由的
auth
选项.
- 基于路由的
onCredentials
- 仅在执行身份验证时调用。
Authorization
- 基于路由的 authentication
access
选项.
- 基于路由的 authentication
onPostAuth
- 无论是否执行认证,都会调用。
Headers validation
- 基于路由的
validate.headers
选项. - 基于
failAction
的错误处理。
- 基于路由的
Path parameters validation
- 基于路由的
validate.params
选项. - 基于
failAction
的错误处理。
- 基于路由的
JSONP cleanup
- 基于路由的
jsonp
选项. - 从
request.query
中删除 JSON 参数.
- 基于路由的
Query validation
- 基于路由的
validate.query
选项. - 基于
failAction
的错误处理。
- 基于路由的
Payload validation
- 基于路由的
validate.payload
选项. - 基于
failAction
的错误处理。
- 基于路由的
State validation
- 基于路由的
validate.state
选项. - 基于
failAction
的错误处理。
- 基于路由的
onPreHandler
Pre-handler methods
- 基于路由
pre
选项. - 基于每个预处理程序方法的
failAction
设置的错误处理。
- 基于路由
Route handler
- 执行路由
handler
.
- 执行路由
onPostHandler
- 可以修改包含在
request.response
中的响应 (但是不能指定一个新值)。返回不同的响应类型 (例如, 用 HTML 响应替换错误), 返回一个新的响应值。
- 可以修改包含在
Response validation
- 基于
failAction
的错误处理。
- 基于
onPreResponse
- 通常被调用, 触发请求终止。
- 可以修改包含在
request.response
中的响应 (但是不能指定一个新值). 返回不同的响应类型 (例如, 用 HTML 响应替换错误), 返回一个新的响应值。 请注意,生成的任何错误都不会传递回 onPreResponse 以防止无限循环。
Response transmission
- 可能在
'error'
频道触发'request'
event 。
- 可能在
Finalize request
- 触发
'response'
事件.
- 触发
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论