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の処理が簡単になります。