どうも、webエンジニア初級者です。
expressについて勉強していると"cookie-parser"ってライブラリをよく見かけます。
なんとなくコピペで動かせてはいるのですが、ちゃんと調べたことなかったので調べました。
大前提:Cookieとは
Cookie(HTTP Cookie)は、Webサーバーがユーザーのブラウザに保存するデータのこと。
保存されたCookieは以降、リクエスト時にとリクエストヘッダーを使ってサーバーへ返送されます。
参考:https://developer.mozilla.org/ja/docs/Web/HTTP/Cookies
使い方の例として、サイトの訪問者を識別するIDを保存しておき、2回目以降のアクセスの際に自動でログインしたり、前回の閲覧履歴を表示したりってのが考えられます。
本題:cookie-parserについて
https://www.npmjs.com/package/cookie-parser
サーバに送られてきたリクエストに付加されたCookie情報を解析し、Cookie名をキーにしたオブジェクトを req.cookies に格納してくれます。
cookieを扱いやすくしてくれる便利ツールってことですね。
使ってみよう
基本となるexpress環境を作ります。公式ドキュメント通りに作っておきます。
app.js
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
cookie-parserの導入
次のコマンドでインストールします。
$ npm install cookie-parser
expressに適用します。
app.js
const express = require('express')
const cookieParser = require('cookie-parser')
const app = express()
app.use(cookieParser())
...
cookieを読み書きする
キー"test"にアクセス回数を保存して、"n回アクセスしました"と表示してみます。
app.js
app.get('/', (req, res) => {
let count;
if (!!req.cookies.test) {
count = Number.parseInt(req.cookies.test) + 1;
} else {
count = 1;
}
let message = count + '回アクセスしました';
// cookieを設定
res.cookie('test', count, { maxAge: 60000, httpOnly: false });
res.send(message)
})
ブラウザーで http://localhost:3000 にアクセスして、リロードを繰り返すとカウントが増えていきます。
ソース全体はこんな感じです
app.js
const express = require('express')
const cookieParser = require('cookie-parser')
const app = express()
app.use(cookieParser())
const port = 3000
app.get('/', (req, res) => {
let count;
if (!!req.cookies.test) {
count = Number.parseInt(req.cookies.test) + 1;
} else {
count = 1;
}
let message = count + '回アクセスしました';
// cookieを設定
res.cookie('test', count, { maxAge: 60000, httpOnly: false });
res.send(message)
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
↧