什么是 Cookie?
Cookie 是一种存储在用户计算机中的数据片段,可以被 Web 服务器检索。通常,它是作为登录凭据,用户首选项或跟踪会话等数据的一部分设置的。每个 Cookie 都包含一些关键数据,例如名称、值、过期日期、域名、路径等等。
Deno 是一个新兴的 JavaScript/TypeScript 运行时,它提供了一种安全、现代、稳定的环境来运行 JavaScript 应用程序。与 Node.js 不同,Deno 没有内置的 Cookie 模块。
在 Deno 中,可以使用 cookies
模块来设置、读取和删除 Cookie。
安装 cookies 模块
要使用 cookies 模块,首先需要将其安装到您的 Deno 项目中。可以使用 Deno 自带的包管理器 deno install
命令。
deno install --allow-net --unstable https://deno.land/x/cookies/mod.ts
设置 Cookie
要设置 Cookie,可以使用 set
方法。以下是一个简单的示例:
import { Cookies } from "https://deno.land/x/cookies/mod.ts"; const cookies = new Cookies(request, response); // 设置名为 "name" 的 Cookie 并将其值设置为 "John" cookies.set("name", "John");
除了 Cookie 的名称和值之外,您还可以设置其他选项,例如过期日期、域、路径等等。您可以在 set
方法中传递一个选项对象。
以下是一个设置过期日期为一天的示例:
import { Cookies } from "https://deno.land/x/cookies/mod.ts"; const cookies = new Cookies(request, response); // 设置名为 "name" 的 Cookie 并将其值设置为 "John",并设置其过期时间为一天。 cookies.set("name", "John", { expires: new Date(Date.now() + 86400 * 1000), });
在其中,86400 秒等于一天的秒数。
读取 Cookie
要读取 Cookie,可以使用 get
方法。以下是一个简单的示例:
// javascriptcn.com 代码示例 import { Cookies } from "https://deno.land/x/cookies/mod.ts"; const cookies = new Cookies(request, response); const name = cookies.get("name"); if (name) { console.log(`Hello ${name}!`); } else { console.log("Hello stranger!"); }
删除 Cookie
要删除 Cookie,可以使用 delete
方法。以下是一个简单的示例:
import { Cookies } from "https://deno.land/x/cookies/mod.ts"; const cookies = new Cookies(request, response); cookies.delete("name");
完整示例
以下是一个使用 cookies 模块的完整示例。它将根据用户的 Cookie 显示欢迎消息或要求用户输入其名称。
// javascriptcn.com 代码示例 import { Cookies } from "https://deno.land/x/cookies/mod.ts"; const port = 3000; console.log(`Server running on port ${port}`); for await (const request of Deno.listen({ port })) { const cookies = new Cookies(request, request.respondWith().response); const name = cookies.get("name"); if (name) { request.respondWith( new Response(`Hello ${name}!`, { headers: { "Content-Type": "text/plain" }, }) ); } else { request.respondWith( new Response("What's your name?", { headers: { "Content-Type": "text/plain" }, status: 401, }) ); const body = new TextEncoder().encode( "<html><body><form method='POST'><input type='text' name='name'/><input type='submit'/></form></body></html>" ); const response = await request.respondWith( new Response(body, { headers: { "Content-Type": "text/html" }, }) ); const formData = new URLSearchParams(await request.text()); if (formData.has("name")) { const name = formData.get("name")!; cookies.set("name", name); response.headers.append("Set-Cookie", `${name}; Path=/`); } } }
总结
Cookie 是一种方便、广泛使用的 web 技术,可以在网络应用程序中为用户保存和检索信息。使用 cookies 模块,你可以在 Deno 中轻松地设置、读取和删除 Cookie,帮助你构建更好的 Web 应用程序。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6530a9607d4982a6eb23b63e