Bun предоставляет встроенный API для работы с cookies в HTTP-запросах и ответах. Объект BunRequest включает свойство cookies, который предоставляет CookieMap для удобного доступа и управления cookies. При использовании routes, Bun.serve() автоматически отслеживает request.cookies.set и применяет их к ответу.
Чтение cookies
Читайте cookies из входящих запросов, используя свойство cookies объекта BunRequest:
Bun.serve({
routes: {
"/profile": req => {
// Доступ к cookies из запроса
const userId = req.cookies.get("user_id");
const theme = req.cookies.get("theme") || "light";
return Response.json({
userId,
theme,
message: "Страница профиля",
});
},
},
});2
3
4
5
6
7
8
9
10
11
12
13
14
15
Установка cookies
Для установки cookies используйте метод set объекта CookieMap из объекта BunRequest.
Bun.serve({
routes: {
"/login": req => {
const cookies = req.cookies;
// Установка cookie с различными опциями
cookies.set("user_id", "12345", {
maxAge: 60 * 60 * 24 * 7, // 1 неделя
httpOnly: true,
secure: true,
path: "/",
});
// Добавление cookie предпочтений темы
cookies.set("theme", "dark");
// Изменённые cookies из запроса автоматически применяются к ответу
return new Response("Вход выполнен успешно");
},
},
});2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Bun.serve() автоматически отслеживает изменённые cookies из запроса и применяет их к ответу.
Удаление cookies
Для удаления cookie используйте метод delete объекта request.cookies (CookieMap):
Bun.serve({
routes: {
"/logout": req => {
// Удаление cookie user_id
req.cookies.delete("user_id", {
path: "/",
});
return new Response("Выход выполнен успешно");
},
},
});2
3
4
5
6
7
8
9
10
11
12
Удалённые cookies становятся заголовком Set-Cookie в ответе со значением maxAge, установленным в 0, и пустым value.