Bun proporciona una API integrada para trabajar con cookies en solicitudes y respuestas HTTP. El objeto BunRequest incluye una propiedad cookies que proporciona un CookieMap para acceder y manipular cookies fácilmente. Cuando usas routes, Bun.serve() rastrea automáticamente request.cookies.set y las aplica a la respuesta.
Leer cookies
Lee cookies de solicitudes entrantes usando la propiedad cookies en el objeto BunRequest:
Bun.serve({
routes: {
"/profile": req => {
// Acceder a cookies de la solicitud
const userId = req.cookies.get("user_id");
const theme = req.cookies.get("theme") || "light";
return Response.json({
userId,
theme,
message: "Página de perfil",
});
},
},
});2
3
4
5
6
7
8
9
10
11
12
13
14
15
Establecer cookies
Para establecer cookies, usa el método set en el CookieMap del objeto BunRequest.
Bun.serve({
routes: {
"/login": req => {
const cookies = req.cookies;
// Establecer una cookie con varias opciones
cookies.set("user_id", "12345", {
maxAge: 60 * 60 * 24 * 7, // 1 semana
httpOnly: true,
secure: true,
path: "/",
});
// Agregar una cookie de preferencia de tema
cookies.set("theme", "dark");
// Las cookies modificadas de la solicitud se aplican automáticamente a la respuesta
return new Response("Inicio de sesión exitoso");
},
},
});2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Bun.serve() rastrea automáticamente las cookies modificadas de la solicitud y las aplica a la respuesta.
Eliminar cookies
Para eliminar una cookie, usa el método delete en el objeto request.cookies (CookieMap):
Bun.serve({
routes: {
"/logout": req => {
// Eliminar la cookie user_id
req.cookies.delete("user_id", {
path: "/",
});
return new Response("Sesión cerrada exitosamente");
},
},
});2
3
4
5
6
7
8
9
10
11
12
Las cookies eliminadas se convierten en un encabezado Set-Cookie en la respuesta con el maxAge establecido en 0 y un value vacío.