简介
yar 是一个基于 Hapi 的易于使用的 Session 管理器,提供了通用的 API,如 GET、HEAD、POST、PUT、PATCH、DELETE。它的设计利用了服务器的相对静态的初始内存消耗和高速缓存,以确保大量的客户端连接不会损害服务器的性能。此外,yar 还支持多种储存后端,如内存、Redis 等。
安装
使用 npm 安装 yar:
npm install yar
示例
下面是一个简单的示例,展示了如何使用 yar 来管理 Session。首先,我们需要在我们的 Hapi 服务器中注册 yar:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- --- - --------------- ----- ------ - --- ------------- ----- ------------ ----- ---- --- ----- ---- - ----- -- -- - ----- ----------------- ------- ---- -------- - ----------- ------ -- ------------------- ----- -------------- - --------- ----------------------------------- --------- ----- -- -- ---- -------- -------- ----- ------ ----- - - --- -------------- ------- ------ ----- ---- -------- --------- -- -- - ------------------------ --------- ------ ------ ----------------------------- - --- ----- --------------- ------------------- ------- --- --------------------- -- -------
在上面的示例中,我们在 Hapi 服务器上注册了 yar 插件,并在根路径中设置了一个 Hello World 的 Session 变量。
API
这里是 yar 的几个主要 API:
request.yar.set(name, value)
将值存到 Session 中。Session 对象用请求头 cookie 维护。任何支持序列化的值,例如字符串和数字,都可以存放到 Session 中。
当存储一个对象时,它将被字符串化为 JSON。如果 JSON 序列化失败,则将其记录到服务器控制台。
request.yar.get(name, [clear])
获取存储在 Session 中的值。如果不存在,则返回 undefined。
注意,当获取到 Session 的值时,将自动标识为已读取并不改变该值。如果您不希望该值在后续请求中重新使用,则可以传递一个 'clear' 参数。
request.yar.clear(name)
从回话中删除一个给定的值。
request.yar.reset()
从当前请求 Session 中清除所有值。
request.yar.touch()
“Touch” 整个 Session,更新其 cookie 到 cookieOptions.ttl。如果 ttl 为 0,则 Session 将在 窗口关闭 时终止。要异步执行 touch 以确保 cookieOptions.ttl 和 any defer 的修改已经奏效,可以传递一个可选的回调函数。
yar.cached(request)
返回领先的减慢和过时 Session 的 session 缓存实例,要使用该实例,请使用 request.yar.store.client.get() 代替 request.yar.get() 等。
request.yar.renew()
创建一个新 Session ID,并将旧 Session 中的数据保留在新 Session 中。
request.yar.flash(type, message, isOverride)
添加一个闪现通知。用于与下一次 Session 引用配合使用。 type - 将显示的消息类别。 message - 显示的消息。 isOverride - 覆盖任何先前的值。
结论
在本文中,我们介绍了 yar 的基本知识,以及它如何在 Hapi 服务器上使用。我们还提供了一些常见的 API,您可以快速开始使用 yar 更好地管理您的 Session。如果您想要掌握更多技能,请查看官方文档并使用 yar 进行实践。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600672683660cf7123b3661b