Skip to content

Bun предоставляет встроенный API для работы с cookies в HTTP-запросах и ответах. Объект BunRequest включает свойство cookies, который предоставляет CookieMap для удобного доступа и управления cookies. При использовании routes, Bun.serve() автоматически отслеживает request.cookies.set и применяет их к ответу.

Чтение cookies

Читайте cookies из входящих запросов, используя свойство cookies объекта BunRequest:

ts
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: "Страница профиля",
      });
    },
  },
});

Установка cookies

Для установки cookies используйте метод set объекта CookieMap из объекта BunRequest.

ts
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("Вход выполнен успешно");
    },
  },
});

Bun.serve() автоматически отслеживает изменённые cookies из запроса и применяет их к ответу.

Удаление cookies

Для удаления cookie используйте метод delete объекта request.cookies (CookieMap):

ts
Bun.serve({
  routes: {
    "/logout": req => {
      // Удаление cookie user_id
      req.cookies.delete("user_id", {
        path: "/",
      });

      return new Response("Выход выполнен успешно");
    },
  },
});

Удалённые cookies становятся заголовком Set-Cookie в ответе со значением maxAge, установленным в 0, и пустым value.

Bun от www.bunjs.com.cn