ctx.cookies.set() 与 Deno 标准中的 setCookies

ctx.cookies.set() vs setCookies in Deno std

我目前正在使用 Deno(Oak 框架),想知道使用 Oak 的 ctx.cookieshttps://github.com/oakserver/oak/blob/main/cookies.ts) vs something from Deno's std lib (setCookies, getCookie, and deleteCookie from https://deno.land/std@0.120.0/http/cookie.ts)有什么区别。

尽管 Oak 框架提供了使用 cookie 的方法,但两者之间 pros/cons 需要考虑什么?即使在使用框架时,是否有理由使用 std lib 而不是 oak 的方法?

简而言之:如果您正在使用 Oak,请使用 Oak 提供的方法,除非您有特殊原因不这样做。 (如果你遇到过这样的场景,那就很明显了。)


setCookie function from deno.land/std/http simply appends a new Set-Cookie header to an existing Headers 对象。您可以将它与 Oak 一起使用:

const cookie = {name: 'cookie_name' value: 'cookie_value'};
setCookie(ctx.response.headers, cookie);

来自deno.land/x/oakset method on ctx.cookies (which is an instance of the Cookies class) 允许您直接操作当前请求-响应中的cookies context:

await ctx.cookies.set('cookie_name', 'cookie_value');

使用它时,您不需要手动传递对现有 Headers 对象的引用(因为它已经是上下文响应对象的一部分)。这种更高级别的抽象意味着您不必管理(甚至不必考虑)那么多离散的部分。 Oak 在处理 cookie 时提供额外的抽象,例如 cryptographic signatures。文档涵盖了详细信息。