はじめに
FlaskでRest APIサーバの学習をしていてFlaskでセッションでどうやってやるんだろう??って疑問が湧いてFlaskでSessionを使う方法を調べてみました。
本記事ではFlaskに標準で容易されているSessionを利用してみます。
思いの外超簡単だったのでショート記事ですがまとめてみました。
環境
Visual Studio Code:1.85.2
Python:3.11.6
Flask:3.0.1
Werkzeug:3.0.1
サンプルコード
GitHubで公開しています。
サンプルコードの使い方
事前に下記がインストールされていること
- pytohon(pipコマンド)
- Node.js(npmコマンド)
サーバサイド
SunChannelフォルダで以下のコマンドを実行します。
pip install flask
pip install blueprint
python app.py
クライアントサイド
client/counter-client フォルダで以下のコマンドを実行します。
npm i
npm run start
アクセス
必ず以下のURLでアクセスしてください。
npm run start
を実行した時に表示するURLにアクセスします。
動作イメージ
Sessionでデータをサーバに保持しておりボタンをクリックするとカウントアップしいきます。
下記のイメージでは変な値がからスタートしていますが、初めて実行する時は1からカウントアップします。
実装手順
大まかなセッションの利用手順は以下の通りです。
- 必要なパッケージをインストール
- secret_keyの設定
- Sessionのインポート
- セッションを使う
説明
必要なパッケージをインストール
まずは必要なパッケージをインストールしていきましょう。
pip install flask
pip install blueprint
secret_keyの設定
from flask import Flask
from counter import bp_counter
# Flaskのインスタンス生成
app = Flask(__name__, static_url_path='/')
# Sessionの暗号化キー
app.secret_key = b'abcdefghijklmn'
Flaskのインスタンスを生成したらsecret_keyを設定します。
secret_keyには文字列もしくはバイト列か文字列を設定します。
上記のコードでは文字列をバイトに変換しています。
文字列のプレフィックスに関しては公式サイトを確認してください。
今回はsecret_keyを直に記述しておりますが、こういったセンシティブな情報は秘匿されておくべきです。
設定方法や推奨方法については公式サイトを確認してください。
Sessionのインポート
準備が完了したらsessionをインポートします。
from flask import session
セッションを使う
あとはセッションを利用するだけです。
sessionはdict型なので、
今回は初回アクセスに対応してキーの存在確認などを行っております。
# sessionはdic型なのでキーが存在するか確認
if 'count' in session:
# すでにキーが存在する場合はカウントアップ
current_count = session['count'] + 1
session['count'] = current_count
else:
# キーが存在しない場合は初期値を格納
session['count'] = 1
# レスポンスのメッセージを生成してJSONに変換してHTTPステータスコード200で返す
message = {'number': session['count']}
まとめ
session自体はかなり簡単に利用できるっぽいですね。次回はflask-sessionなどの記事をアップできたらいいなと思います。