Skip to content

Bun bietet eine integrierte API zum Arbeiten mit Cookies in HTTP-Anfragen und -Antworten. Das BunRequest-Objekt enthält eine cookies-Eigenschaft, die eine CookieMap für den einfachen Zugriff auf Cookies und deren Manipulation bereitstellt. Bei Verwendung von routes verfolgt Bun.serve() automatisch request.cookies.set und wendet sie auf die Antwort an.

Cookies lesen

Lesen Sie Cookies aus eingehenden Anfragen mithilfe der cookies-Eigenschaft des BunRequest-Objekts:

ts
Bun.serve({
  routes: {
    "/profile": req => {
      // Auf Cookies aus der Anfrage zugreifen
      const userId = req.cookies.get("user_id");
      const theme = req.cookies.get("theme") || "light";

      return Response.json({
        userId,
        theme,
        message: "Profilseite",
      });
    },
  },
});

Cookies setzen

Um Cookies zu setzen, verwenden Sie die set-Methode auf der CookieMap des BunRequest-Objekts.

ts
Bun.serve({
  routes: {
    "/login": req => {
      const cookies = req.cookies;

      // Ein Cookie mit verschiedenen Optionen setzen
      cookies.set("user_id", "12345", {
        maxAge: 60 * 60 * 24 * 7, // 1 Woche
        httpOnly: true,
        secure: true,
        path: "/",
      });

      // Ein Theme-Präferenz-Cookie hinzufügen
      cookies.set("theme", "dark");

      // Geänderte Cookies aus der Anfrage werden automatisch auf die Antwort angewendet
      return new Response("Anmeldung erfolgreich");
    },
  },
});

Bun.serve() verfolgt automatisch geänderte Cookies aus der Anfrage und wendet sie auf die Antwort an.

Cookies löschen

Um ein Cookie zu löschen, verwenden Sie die delete-Methode auf dem request.cookies (CookieMap)-Objekt:

ts
Bun.serve({
  routes: {
    "/logout": req => {
      // Das user_id-Cookie löschen
      req.cookies.delete("user_id", {
        path: "/",
      });

      return new Response("Erfolgreich abgemeldet");
    },
  },
});

Gelöschte Cookies werden zu einem Set-Cookie-Header in der Antwort mit maxAge auf 0 gesetzt und einem leeren value.

Bun von www.bunjs.com.cn bearbeitet