我目前正在使用Deno(Oak框架(,想知道使用Oak的ctx.cookies
有什么区别(https://github.com/oakserver/oak/blob/main/cookies.ts)与Deno的std-lib中的内容(来自的setCookies
、getCookie
和deleteCookie
https://deno.land/std@0.120.0/http/cookie.ts(。
尽管Oak框架提供了使用cookie的方法,但两者之间需要考虑哪些利弊?即使在使用框架的时候,也有理由使用std-lib而不是oak的方法吗?
简而言之:如果您使用Oak,请使用Oak提供的方法,除非您有特定的理由不这样做。(如果您遇到这种情况,这将是显而易见的。(
deno.land/std/http
中的setCookie
函数只是将新的Set-Cookie
标头附加到现有的Headers
对象。您可以将其与Oak:一起使用
const cookie = {name: 'cookie_name' value: 'cookie_value'};
setCookie(ctx.response.headers, cookie);
来自deno.land/x/oak
的ctx.cookies
(它是Cookies
类的实例(上的set
方法允许您直接对当前请求响应context
:中的cookie进行操作
await ctx.cookies.set('cookie_name', 'cookie_value');
使用它时,不需要手动传递对现有Headers
对象的引用(因为它已经是上下文响应对象的一部分(。这种更高级的抽象意味着你不必管理(甚至不必考虑(那么多离散的部分。Oak在处理cookie时提供了额外的抽象,例如加密签名。文件涵盖了详细信息。