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:
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",
});
},
},
});2
3
4
5
6
7
8
9
10
11
12
13
14
15
Cookies setzen
Um Cookies zu setzen, verwenden Sie die set-Methode auf der CookieMap des BunRequest-Objekts.
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");
},
},
});2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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:
Bun.serve({
routes: {
"/logout": req => {
// Das user_id-Cookie löschen
req.cookies.delete("user_id", {
path: "/",
});
return new Response("Erfolgreich abgemeldet");
},
},
});2
3
4
5
6
7
8
9
10
11
12
Gelöschte Cookies werden zu einem Set-Cookie-Header in der Antwort mit maxAge auf 0 gesetzt und einem leeren value.