返回

一览egg.js实用之Cookie操作

前端

当我们谈论数据存储时,立即想到的是数据库,这可能会让许多小伙伴以为使用Egg.js进行开发时,必须使用关系型数据库来存储数据。然而,实际上Egg.js提供了另外一种存储数据的方式,那就是Cookie。

一、Egg.js Cookie 简介

Cookie(又称为浏览器Cookie、网络Cookie、电脑Cookie)是服务器发送给浏览器的一个小文件。它将在浏览器的硬盘上保存一段时间,并在以后的请求中每次向同一服务器发送时随请求一起被发送回服务器。

Cookie的使用方式通常如下:

  1. 服务器设置Cookie:服务器端通过响应头Set-Cookie向浏览器发送一个Cookie。Cookie包含服务器设置的值和一些其他信息,如Cookie的名称、过期时间和作用域等。

  2. 浏览器将Cookie保存在本地:浏览器将服务器发送的Cookie保存在本地计算机上,通常保存在浏览器目录下的一个名为“Cookies”的文件中。

  3. 浏览器在每次请求时发送Cookie:当浏览器再次请求该服务器时,它会将本地存储的Cookie随请求一起发送回服务器。

二、Egg.js Cookie 的设置

Egg.js中Cookie的操作都内置在ctx对象原型上,使用起来非常方便。在Egg.js中,我们可以通过ctx.cookies对象来设置和获取Cookie。我们可以在路由处理函数中使用以下代码来设置一个Cookie:

// 设置Cookie的名称为"count",值为"1",过期时间为1天
ctx.cookies.set('count', 1, {
  maxAge: 24 * 60 * 60 * 1000 // 1天
});

你也可以通过ctx.cookies.set()方法来设置Cookie的其他选项,如:

  • domain:指定Cookie的作用域
  • path:指定Cookie的路径
  • secure:指定Cookie是否只能通过HTTPS协议发送
  • httpOnly:指定Cookie是否只能通过HTTP协议发送

三、Egg.js Cookie 的获取

要获取Cookie,我们可以使用ctx.cookies.get()方法。该方法可以获取指定名称的Cookie值。例如:

// 获取名为"count"的Cookie
const count = ctx.cookies.get('count');

四、Egg.js Cookie 的删除

要删除Cookie,我们可以使用ctx.cookies.set()方法,并设置Cookie的过期时间为0。例如:

// 删除名为"count"的Cookie
ctx.cookies.set('count', null);

五、总结

Cookie是客户端存储的一种技术,在Egg.js中可以使用ctx.cookies对象来操作Cookie。我们可以通过ctx.cookies.set()方法来设置Cookie,通过ctx.cookies.get()方法来获取Cookie,通过ctx.cookies.set()方法来删除Cookie。Egg.js中Cookie的设置和读取非常方便,可以帮助我们轻松实现一些常见的功能,如用户登录态管理、购物车等。