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 で分岐処理を行うのが一般的である。