Skip to content

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:

ts
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",
      });
    },
  },
});

Definindo cookies

Para definir cookies, use o método set no CookieMap do objeto BunRequest.

ts
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");
    },
  },
});

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):

ts
Bun.serve({
  routes: {
    "/logout": req => {
      // Deleta o cookie user_id
      req.cookies.delete("user_id", {
        path: "/",
      });

      return new Response("Logout realizado com sucesso");
    },
  },
});

Cookies deletados se tornam um header Set-Cookie na resposta com o maxAge definido como 0 e um value vazio.

Bun by www.bunjs.com.cn edit