Skip to content

Bun は HTTP リクエストとレスポンスの Cookie を操作するための組み込み API を提供します。BunRequest オブジェクトには cookies プロパティが含まれており、Cookie へのアクセスと操作を容易にする CookieMap を提供します。routes を使用する場合、Bun.serve()request.cookies.set を自動的に追跡し、それらをレスポンスに適用します。

BunRequest オブジェクトの cookies プロパティを使用して、受信リクエストから Cookie を読み取ります。

ts
Bun.serve({
  routes: {
    "/profile": req => {
      // リクエストから Cookie にアクセス
      const userId = req.cookies.get("user_id");
      const theme = req.cookies.get("theme") || "light";

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

Cookie を設定するには、BunRequest オブジェクトの CookieMapset メソッドを使用します。

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");

      // リクエストから変更された Cookie は自動的にレスポンスに適用されます
      return new Response("Login successful");
    },
  },
});

Bun.serve() はリクエストから変更された Cookie を自動的に追跡し、レスポンスに適用します。

Cookie を削除するには、request.cookiesCookieMap)オブジェクトの delete メソッドを使用します。

ts
Bun.serve({
  routes: {
    "/logout": req => {
      // user_id Cookie を削除
      req.cookies.delete("user_id", {
        path: "/",
      });

      return new Response("Logged out successfully");
    },
  },
});

削除された Cookie は maxAge0 に設定され、value が空のレスポンスの Set-Cookie ヘッダーになります。

Bun by www.bunjs.com.cn 編集