O Bun fornece uma API built-in para trabalhar com cookies em requisições e respostas HTTP. O objeto BunRequest inclui uma propriedade cookies que fornece um CookieMap para acessar e manipular cookies facilmente. Ao usar routes, Bun.serve() automaticamente rastreia request.cookies.set e os aplica à resposta.
Lendo cookies
Leia cookies de requisições recebidas usando a propriedade cookies no objeto BunRequest:
Bun.serve({
routes: {
"/profile": req => {
// Acessa cookies da requisição
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
Definindo cookies
Para definir cookies, use o método set no CookieMap do objeto BunRequest.
Bun.serve({
routes: {
"/login": req => {
const cookies = req.cookies;
// Define um cookie com várias opções
cookies.set("user_id", "12345", {
maxAge: 60 * 60 * 24 * 7, // 1 semana
httpOnly: true,
secure: true,
path: "/",
});
// Adiciona um cookie de preferência de tema
cookies.set("theme", "dark");
// Cookies modificados da requisição são automaticamente aplicados à resposta
return new Response("Login realizado com sucesso");
},
},
});2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Bun.serve() automaticamente rastreia cookies modificados da requisição e os aplica à resposta.
Deletando cookies
Para deletar um cookie, use o método delete no objeto request.cookies (CookieMap):
Bun.serve({
routes: {
"/logout": req => {
// Deleta o cookie user_id
req.cookies.delete("user_id", {
path: "/",
});
return new Response("Logout realizado com sucesso");
},
},
});2
3
4
5
6
7
8
9
10
11
12
Cookies deletados se tornam um header Set-Cookie na resposta com o maxAge definido como 0 e um value vazio.