Flask ではデコレータ @app.route() を使ってルーティングを定義する。URL パスと Python 関数を結びつけることで、リクエストに応じた処理を実行できる。
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello, World!' @app.route('/about') def about(): return 'About Page'
/ にアクセスすると index 関数が、/about にアクセスすると about 関数が呼び出される。
URL 変数
URL の一部を変数として受け取ることができる。<変数名> の形式で指定し、関数の引数として受け取る。
@app.route('/user/<username>') def show_user(username): return f'User: {username}' @app.route('/post/<int:post_id>') def show_post(post_id): return f'Post ID: {post_id}'
<int:post_id> のように型コンバータを指定すると、Flask が自動的に型変換を行う。利用可能なコンバータは以下のとおり。
| string | デフォルト。スラッシュを含まない文字列 |
| int | 正の整数 |
| float | 正の浮動小数点数 |
| path | スラッシュを含む文字列 |
| uuid | UUID 文字列 |
HTTP メソッドの指定
デフォルトでは GET リクエストのみを受け付ける。POST など他のメソッドを許可するには methods 引数を指定する。
@app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': return 'Processing login...' return 'Login Page'
複数のメソッドを許可する場合は、request.method で分岐処理を行うのが一般的である。