Skip to content

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.

Leggi i cookie dalle request in arrivo usando la proprietà cookies sull'oggetto BunRequest:

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

Per impostare i cookie, usa il metodo set sulla CookieMap dall'oggetto BunRequest.

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

Bun.serve() tiene traccia automaticamente dei cookie modificati dalla request e li applica alla response.

Per eliminare un cookie, usa il metodo delete sull'oggetto request.cookies (CookieMap):

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

      return new Response("Logout effettuato con successo");
    },
  },
});

I cookie eliminati diventano un header Set-Cookie sulla response con il maxAge impostato a 0 e un value vuoto.

Bun a cura di www.bunjs.com.cn