見出し画像

Flaskアプリケーション実行の流れ

今日は、『Head First Python』の5章 “Webアプリケーションの構築” で学んだことをアウトプットします。

ブラウザからURLにアクセスすると、サーバから「Hello world from Flask」というメッセージが帰ってくるという簡易なWebアプリケーションを構築してみます。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello() -> str:
   return 'Hello world from Flask'

app.run()

1行目は、flaskモジュールからFlaskクラスをインポートします。
Import flaskと書いてflask.FlaskでFlaskクラスを参照することもできますが、flask.Flaskでは読みやすくないので、import文のfromバージョンを使っています。

2行目は、Flask型のオブジェクトを作成して変数appに代入します。

3行目以降がサーバの動作になります。

関数をURLでデコレートする

3行目のコードは、Python構文のデコレータを使っています。関数デコレータは、既存の関数の振る舞いをその関数のコードを変更せずに追加します(つまり、関数がデコレートされます)。
関数デコレータは@記号から始まります。

Flaskのrouteデコレータは、Python関数をデコレートすることでURLパスにマッピングできます。この例では、URL「/」を4行目で定義している関数hello関数にマッピングしています。

routeデコレータは、サーバに「/」のリクエストが届いたときにFlaskサーバがこの関数を呼び出すようにします。

そして、routeデコレータはデコレートされた関数の結果を待ってからその結果をサーバに返します。その後レスポンスをブラウザに返します。

Webアプリケーションを動かす

routeデコレータ行を書いたら、5行目でデコレートされた関数を開始します。このWebアプリケーションではhello関数です。hello関数は「Hello world from Flask!」というメッセージを返します。

最後の行は変数appに代入されたFlaskオブジェクトを取得し、FlaskにWebサーバを起動するように指示するので、runを呼び出します。

この時点で、Flaskは組み込みWebサーバを起動してWebアプリケーションのコードを実行します。URLとして「/」をリクエストされるとサーバは「Hello world from Flask!」というメッセージを返しますが、他のURLがリクエストされると404の「Request not found」エラーが発生します。

サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪