FastifyでCookie情報を処理する方法

概要

Fastifyでは、Cookieの処理はフックやルートハンドラ内で行います。
これらを使用して、Cookieに関連するデータの取得やレスポンスの生成などを行います。

ここでは、以下バージョンを使用した、FastifyでCookie処理する方法を説明します。

Fastify v3.20.2
nodejs v19.7.0
fastify-cookie v5.3.0

また、今回作成するコードは全て、GitHubに掲載しています。

なお、本記事では、fastify-cookieプラグインを使用するため以下コマンドを入力して、fastify-cookieをインストールしてください、

npm install fastify-cookie

Cookie情報を取得する方法

Cookieに関する情報を取得するには、fastify-cookieプラグインとリクエストオブジェクトを使用します。 fastify-cookieは、クライアントからのリクエストに含まれるCookieを解析します。解析されたCookieはリクエストオブジェクトのcookiesプロパティに格納されます。

以下のサンプルコードは、FastifyでCookieを理解するための例です。GETリクエストを受け取り、リクエストに含まれるCookieにアクセスして、それらの値を含むレスポンスを返します。

cookie.js

const fastify = require('fastify')({ logger: true });
const fastifyCookie = require('fastify-cookie');

fastify.register(fastifyCookie);

fastify.get('/', (request, reply) => {
  // Cookieの取得
  const cookies = request.cookies;

  const response = {
    cookies: cookies
  };

  reply.send(response);
});

fastify.listen(3000, (err, address) => {
  if (err) {
    fastify.log.error(err)
    process.exit(1)
  }
  fastify.log.info(`Server is running on ${address}`)
});

解説

  • Fastifyとfastify-cookieのインスタンスの作成
const fastify = require('fastify')({ logger: true });
const fastifyCookie = require('fastify-cookie');

Fastifyモジュールとfastify-cookieモジュールをインポートし、そのインスタンスを作成します。

  • fastify-cookieのミドルウェア関数の使用
fastify.register(fastifyCookie);

fastify-cookieのミドルウェア関数を使用します。これにより、リクエストに含まれるCookieは自動的に解析され、req.cookiesに格納されます。

  • ルートハンドラの定義
fastify.get('/', (request, reply) => {
  // Cookieの取得
  const cookies = request.cookies;

  const response = {
    cookies: cookies
  };

  reply.send(response);
});

ルート(’/’)へのGETリクエストをハンドリングします。リクエストが来ると、リクエストに含まれるCookieを取得し、それを含むオブジェクトをレスポンスとして返します。

  • サーバーの起動
fastify.listen(3000, (err, address) => {
  if (err) {
    fastify.log.error(err)
    process.exit(1)
  }
  fastify.log.info(`Server is running on ${address}`)
});

Fastifyのインスタンスをポート3000でリッスンさせ、サーバーを起動します。サーバーが起動したら、“Server is running on ${address}“というメッセージをコンソールに出力します。

テスト

curl -b "key=value" http://localhost:3000

このコマンドで、キーが"key"で値が"value"のCookieを含むリクエストを送ります

まとめ

この記事では、Fastifyを使用してCookieを処理する方法を

紹介しました。 Cookieを利用することで、ユーザーの状態を管理したり、ユーザーの設定を保存したりすることができます。Fastifyはパフォーマンスに優れたWebフレームワークであり、fastify-cookieプラグインを使用することでCookieの処理が簡単になります。