Bun fornisce un'API built-in per lavorare con i cookie nelle request e response HTTP. L'oggetto BunRequest include una proprietà cookies che fornisce una CookieMap per accedere e manipolare facilmente i cookie. Quando si usa routes, Bun.serve() tiene traccia automaticamente di request.cookies.set e li applica alla response.
Leggere i cookie
Leggi i cookie dalle request in arrivo usando la proprietà cookies sull'oggetto BunRequest:
Bun.serve({
routes: {
"/profile": req => {
// Accedi ai cookie dalla request
const userId = req.cookies.get("user_id");
const theme = req.cookies.get("theme") || "light";
return Response.json({
userId,
theme,
message: "Pagina profilo",
});
},
},
});2
3
4
5
6
7
8
9
10
11
12
13
14
15
Impostare i cookie
Per impostare i cookie, usa il metodo set sulla CookieMap dall'oggetto BunRequest.
Bun.serve({
routes: {
"/login": req => {
const cookies = req.cookies;
// Imposta un cookie con varie opzioni
cookies.set("user_id", "12345", {
maxAge: 60 * 60 * 24 * 7, // 1 settimana
httpOnly: true,
secure: true,
path: "/",
});
// Aggiungi un cookie per le preferenze del tema
cookies.set("theme", "dark");
// I cookie modificati dalla request vengono automaticamente applicati alla response
return new Response("Login effettuato");
},
},
});2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Bun.serve() tiene traccia automaticamente dei cookie modificati dalla request e li applica alla response.
Eliminare i cookie
Per eliminare un cookie, usa il metodo delete sull'oggetto request.cookies (CookieMap):
Bun.serve({
routes: {
"/logout": req => {
// Elimina il cookie user_id
req.cookies.delete("user_id", {
path: "/",
});
return new Response("Logout effettuato con successo");
},
},
});2
3
4
5
6
7
8
9
10
11
12
I cookie eliminati diventano un header Set-Cookie sulla response con il maxAge impostato a 0 e un value vuoto.