- 服务器 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
- 请求
- 插件
Server options
options 控制服务器对象的行为。注意 options 对象是深拷贝的(除了 listener
属性是浅拷贝)并且不能包含任何不安全的值来执行【perform】深拷贝
所有的选项都是可选的。
server.options.address
默认值: '0.0.0.0'
(所有可用的网络接口)
设置服务器所要监听的主机名或者 IP 地址。如果没有配置,默认会为已提供的 host
选项,否则为所有可用的网络接口。设置 '127.0.0.1'
或 'localhost'
限制服务器仅来自同一主机。
server.options.app
默认值: {}
.
提供特定于【specific】应用程序的配置,以后可以通过【via】它进行访问 server.settings.app
。框架不与此对象交互【interact】。它只是提供一个随处可用的 server
的引用。
注意与 server.settings.app
的区别,它用于存储静态的配置值。 server.app
用于存储运行时的状态。
server.options.autoListen
默认值: true
.
用于禁用 listener
的自动初始化。值为 false
时,表示【indicates】框架外将手动开启 listener
不能与 port
一起设置为 false
server.options.cache
默认值: { provider: { constructor: require('catbox-memory'), options: { partition: 'hapi-cache' } } }
.
设置服务端缓存的提供者程序。每个服务器包含一个默认用于存储应用程序状态的缓存。默认情况下,创建了一个简单的基于内存的缓存,其容量和功能有限。
hapi 使用 catbox 为其缓存实现【implementation】,包括对常见存储解决方案的支持(例如 Redis, MongoDB, Memcached, Riak 等等)。仅当 methods 和 plugins 明确存储状态在缓存中时才使用缓存。
服务器缓存配置仅定义存储容器本身。配置可以指定一个或多个(数组):
一个类或者原型方法(通常通过在 catbox 策略上调用
require()
来获得,例如require('catbox-redis')
)。一个新的 catbox client 将使用此函数在内部【internally】创建。配置对象具有以下内容:
engine
- 一个类, 原型方法, 或 catbox 对象.name
- 稍后为 server methods 或 plugins 提供或配置缓存时使用的标识符。每个缓存名称必须是惟一的。单一项可以省略定义默认缓存的name
选项。如果每个缓存都包含name
,还会配置默认的内存缓存。provider
- a class, a constructor function, or an object with the following:constructor
- a class or a prototype function.options
- (optional) a settings object passed as-is to theconstructor
with the following:partition
- (optional) string used to isolate cached data. Defaults to'hapi-cache'
.- other constructor-specific options passed to the
constructor
on instantiation.
shared
- 如果为true
, 允许多个缓存用户共享同一个片段【segment】 (例如多个方法使用相同的缓存存储容器). 默认为false
.One (and only one) of
engine
orprovider
is required per configuration object.
server.options.compression
默认值: { minBytes: 1024 }
.
定义服务端控制的内容编码请求。如果 false
,相应内容编码被禁用,并且服务器不执行【perform】压缩
server.options.compression.minBytes
默认值: '1024'.
设置最小响应有效负荷大小(以字节为单位),它是内容编码压缩所必须的。 如果有效负载大小低于限制,则不执行压缩。
server.options.debug
默认值: { request: ['implementation'] }
.
确定【Determines】将哪些日志事件发送到控制台。仅用于开发模式并且不影响【affect】记录实际内部和收录的事件。设置 false
去关闭所有输出日志,或者传入一个对象:
log
- 当通过server.log()
记录事件时,通过console.error()
显示的服务器日志标记的字符串数组以及 内部生成 server logs 。 默认为无输出。request
- 当通过server.log()
记录事件时,通过console.error()
显示的请求日志标记的字符串数组以及 内部生成 server logs 。 例如,想要展示所有错误,可以设置选项为['error']
。设置 false 关闭所有输出 debug 信息。设置'*'
显示所有请求日志。 默认为外部代码中抛出的未捕获错误(这些错误会自动处理并导致内部服务器错误响应)或由于开发人员导致的运行时错误
举个例子, 为了展示所有错误, 设置 log
or request
为 ['error']
. 关闭所有输出,设置 log
or request
为 false
. 展示所有服务器日志, 设置 log
or request
为 '*'
. 关闭所有服务器日志, 设置 debug
为 false
.
server.options.host
默认值: 操作系统的主机名,如果不可用默认为 'localhost'
。
公共主机名或 IP 。 用于设置 server.info.host
, server.info.uri
和 address
没有指定.
server.options.listener
默认值: none.
可选的 node HTTP (或 HTTPS) http.Server
对象 (或具有兼容【compatible】接口的对象).
如果 listener
需要手动启动,设置 autoListen
为 false
。
如果 listener
使用 TLS, 设置 tls
为 true
。
server.options.load
默认值: { sampleInterval: 0, concurrent: 0 }
.
服务器过载【excessive】处理的限制,其中:
sampleInterval
- 采样频率,以毫秒为单位。 设置为0
时,将忽略其他加载选项。 默认为0
(没有抽样).maxHeapUsedBytes
- 使用 HTTP Server Timeout (503) 响应拒绝传入请求的最大 V8 堆大小。 默认为0
(no limit).maxRssBytes
- 使用 HTTP Server Timeout (503) 响应拒绝传入请求的最大进程 RSS 大小。 默认为0
(no limit).maxEventLoopDelay
- 使用 HTTP Server Timeout (503) 响应拒绝传入请求的最大事件循环延迟持续时间(以毫秒为单位)。 默认为0
(no limit).concurrent
- 并行执行的最大请求数。这对于在实际处理程序计算负载较低的高负载部署中减少垃圾收集成本很有用。 例如,主要等待上游数据的处理程序将允许许多传入请求一直排队到处理程序生命周期阶段。 这将触发重垃圾收集负载,试图整理许多待处理对象。 减少正在处理的并发请求数可能会有所帮助。 这里没有建议的值 - 您需要测试哪种方法最适合您的特定部署。 默认为0
(no queue).
server.options.mime
默认值: none.
生成服务器使用的 mime 数据库时传递给 mimos 模块的选项 (并通过 server.mime
访问):
一个对象哈希,被合并到指定 here 的内置 mime 信息中
override
- 一个对象哈希,被合并到指定 here 的内置 mime 信息中。 每个键值对代表一个单独的 mime 对象。 每个覆盖值必须包含:key
- 小写的 mime-type 字符串 (例如'application/javascript'
).value
- 符合规范【specifications】的对象 here 。 其他值包含:type
- 指定type
的结果, 默认为key
。predicate
- 带签名的方法function(mime)
当 mime 的类型在数据库中, 此函数执行以允许自定义
const options = { mime: { override: { 'node/module': { source: 'iana', compressible: true, extensions: ['node', 'module', 'npm'], type: 'node/module' }, 'application/javascript': { source: 'iana', charset: 'UTF-8', compressible: true, extensions: ['js', 'javascript'], type: 'text/javascript' }, 'text/html': { predicate: function(mime) { if (someCondition) { mime.foo = 'test'; } else { mime.foo = 'bar'; } return mime; } } } } };
server.options.operations
默认值: { cleanStop: true }
.
定义服务器操作的服务器处理:
cleanStop
- 如果为true
, 服务器跟踪打开的连接,并在服务器停止时正确关闭它们。 在正常负载下,这不应该干扰服务器性能。 但是,在严重的负载连接监控下,可能会消耗额外的资源并加剧这种情况。 如果服务器永远不会停止, 或者如果它被迫停止而不等待打开连接关闭, 将此设置为false
可以节省未使用的资源。 默认为true
.
server.options.plugins
默认值: {}
.
特定于插件的配置,以后可以通过 server.settings.plugins
访问。 plugins
是一个对象,其中每个键是插件名称,值是配置。注意它与 server.settings.plugins
和 server.plugins
的不同,前者用于存储静态配置值,后者用于存储运行时的状态。
server.options.port
默认值: 0
(一个无常【ephemeral】的端口).
服务器要监听的 TCP 端口. 默认为服务器启动后的下一个可用端口。(并分配给 server.info.port
).
如果 port
是一个包含 '/' 的字符串,它用作 UNIX 域的 socket 路径。 如果以 '\.\pipe' 开头,它用作 Windows 命名管道。
server.options.query
默认值: {}
.
定义服务器处理请求路径查询参数组件。
server.options.query.parser
默认值: none.
使用签名 function(searchParams)` 设置查询参数解析器方法,其中:
query
- 包含传入的request.query
参数的对象。- 该方法必须返回一个对象,其中每个键是一个参数,匹配值是参数值。 如果抛出该方法,则在调用
request.setUrl()
时将错误用作响应或返回。
const Qs = require('qs'); const options = { query: { parser: (query) => Qs.parse(query) } };
server.options.router
默认值: { isCaseSensitive: true, stripTrailingSlash: false }
.
控制传入请求 URI 与路由表的匹配方式:
isCaseSensitive
- 确定【determines】路径 '/example' 和 '/EXAMPLE' 是否被视为不同的资源。默认为true
.stripTrailingSlash
- 删除传入路径上的尾部斜杠。默认为false
.
server.options.routes
默认值: none.
一个 route options 对象用于每个路由的默认配置。
server.options.state
默认值:
{ strictHeader: true, ignoreErrors: false, isSecure: true, isHttpOnly: true, isSameSite: 'Strict', encoding: 'none' }
为每个状态(cookie)显式【explicitly】设置默认配置通过 server.state()
](#server.state()) 或者 隐式(没有定义) 使用 state configuration 对象
server.options.tls
默认值: none.
用于创建 HTTPS 连接. tls
对象不变传递到 node HTTPS 服务器,如下所示 node HTTPS documentation 。
当传入一个已配置 listener
对象为 true
时,直接使用 TLS
server.options.uri
默认值: 由运行时的服务器信息构建
没有路径的完整公共 URI (例如 'http://example.com:8080'). 如果存在, 用作服务器的 server.info.uri
, 否则由服务器设置构造.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论