Bun は HTTP リクエストとレスポンスの Cookie を操作するための組み込み API を提供します。BunRequest オブジェクトには cookies プロパティが含まれており、Cookie へのアクセスと操作を容易にする CookieMap を提供します。routes を使用する場合、Bun.serve() は request.cookies.set を自動的に追跡し、それらをレスポンスに適用します。
Cookie の読み取り
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",
});
},
},
});1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Cookie の設定
Cookie を設定するには、BunRequest オブジェクトの CookieMap の set メソッドを使用します。
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");
},
},
});1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Bun.serve() はリクエストから変更された Cookie を自動的に追跡し、レスポンスに適用します。
Cookie の削除
Cookie を削除するには、request.cookies(CookieMap)オブジェクトの delete メソッドを使用します。
ts
Bun.serve({
routes: {
"/logout": req => {
// user_id Cookie を削除
req.cookies.delete("user_id", {
path: "/",
});
return new Response("Logged out successfully");
},
},
});1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
削除された Cookie は maxAge が 0 に設定され、value が空のレスポンスの Set-Cookie ヘッダーになります。