はじめに
Flask入門パート➁です。
前回はFlaskのインストールとコマンドラインでの起動を行いました。
前回の記事はこちら
route()デコレータ
route()デコレータを使用することで、関数とURLを紐づけることができます。
@app.route()が該当の箇所となっており、ブラウザなどから該当のURLにアクセスされた際に、下の関数を実行します。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<p>Home</p>"
@app.route("/hello")
def hello_world():
return "<p>Hello, World!</p>"
@app.route("/health")
def health():
return "<p>正常稼働中</p>"
実際にローカルで動かしてみましょう。
下記のコマンドで、アプリケーションを起動します。
$ flask --app hello run
そして、Webブラウザからroute()に記載をしたURLへアクセスを行います。
特にパスを指定しないと/で記載した内容が表示されています。

パスを/helloや/healthにした場合は表示内容がそれぞれの関数で指定した内容に変わりました。

このように、route()デコレータを活用することで、パスに応じた処理内容を定義することができます。
変数の利用
route()デコレータで使用するパスを/<変数名>とすることで、URLに変数セクションを設定できます。
また、</データ型:変数名>とすることで、データ型を指定することも可能です。
from flask import Flask
from markupsafe import escape
app = Flask(__name__)
@app.route("/<string:username>")
def hello(username):
return f"Hello, {escape(username)}!"
上記では、usernameという変数を定義して関数で利用しています。
ブラウザから確認するとusernameが入力した値に変わっていることが確認できます。

変数で利用できるデータ型は以下の通りです。
- string(default):スラッシュを除く任意の文字列
- int:正の整数
- float:正の浮動小数
- path:スラッシュを含む文字列
- uuid:uuid値
メソッドの指定
route()デコレータのmethods引数を設定することで、URLアクセス時のHTTPメソッドに応じた処理を定義することができます。
デフォルトでは、GETのみに対応していますが、引数によってPOSTやDELETEなども追加できます。
from flask import Flask, request
from markupsafe import escape
app = Flask(__name__)
@app.route("/method", methods=["GET", "POST"])
def method():
if request.method == "POST":
return "You sent a POST request!"
elif request.method == "GET":
return "You sent a GET request!"
else:
return "Other method"
上記では、POST or GET or それ以外 で処理が分かれるようにしています。
ブラウザから直接アクセスすると、GETとして処理されていることがわかります。

curlからメソッド指定でPOSTの通信を行うと、POST用に用意した処理が行われていることが確認できます。
$ curl -X POST http://localhost:5000/method
You sent a POST request!
まとめ
今回はFlaskの基本となるroute()デコレータについて学びました。
AI + 以下サイトを参考にさせていただいています。
