Bun.Cookie 和 Bun.CookieMap 提供了处理 HTTP Cookie 的原生 API。这些 API 提供了快速且易于使用的方法,用于解析、生成和操作 HTTP 请求和响应中的 cookie。
CookieMap 类
Bun.CookieMap 提供了类似 Map 的接口,用于操作一组 cookies。它实现了 Iterable 接口,允许你使用 for...of 循环以及其它迭代方法。
在 HTTP 服务器中使用
在 Bun 的 HTTP 服务器中,请求对象(在routes 中)的 cookies 属性是 CookieMap 的一个实例:
方法
get(name: string): string | null
根据名称获取 cookie。如果不存在则返回 null。
has(name: string): boolean
检查是否存在指定名称的 cookie。
set(name: string, value: string): void
set(options: CookieInit): void
set(cookie: Cookie): void
添加或更新一个 cookie。默认的 cookie 设置为 { path: "/", sameSite: "lax" }。
delete(name: string): void
delete(options: CookieStoreDeleteOptions): void
从 Map 中删除一个 cookie。应用于 Response 时,会添加一个值为空字符串且过期时间为过去的 cookie。只有当域和路径与原 cookie 创建时相同,浏览器才会成功删除该 cookie。
toJSON(): Record<string, string>
将 cookie map 转换为可序列化的格式。
toSetCookieHeaders(): string[]
返回可用于设置所有 cookie 变更的 Set-Cookie 头部字符串数组。
使用 Bun.serve() 时,不必显式调用此方法。对 req.cookies map 的任何修改都会自动应用到响应头。这一方法主要适用于其他 HTTP 服务器实现。
node-server.js
迭代
CookieMap 提供了多种迭代方法:
属性
size: number
返回 map 中 cookie 的数量。
Cookie 类
Bun.Cookie 表示一个 HTTP cookie,包括名称、值以及属性。
构造函数
属性
方法
isExpired(): boolean
检查 cookie 是否已过期。
serialize(): string
toString(): string
返回适用于 Set-Cookie 头的字符串格式。
toJSON(): CookieInit
将 cookie 转换为适合 JSON 序列化的普通对象。
静态方法
Cookie.parse(cookieString: string): Cookie
解析 cookie 字符串成 Cookie 实例。