LoginSignup
1
0

FlaskでSessionを使ってみるの巻

Posted at

はじめに

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からカウントアップします。

count_up.gif

実装手順

大まかなセッションの利用手順は以下の通りです。

  1. 必要なパッケージをインストール
  2. secret_keyの設定
  3. Sessionのインポート
  4. セッションを使う

説明

必要なパッケージをインストール

まずは必要なパッケージをインストールしていきましょう。

コマンド
pip install flask
pip install blueprint

secret_keyの設定

app.py
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をインポートします。

count.py
from flask import  session

セッションを使う

あとはセッションを利用するだけです。
sessionはdict型なので、
今回は初回アクセスに対応してキーの存在確認などを行っております。

count.py
    # 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などの記事をアップできたらいいなと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0