はじめに
手元でJavascriptのfetch動作を確認したかったのだけど、お手頃なレスポンスを返してくれるようなWebサーバーが手元になかったのです。なので、何か簡単にWebサーバー立てれないか調べていたらFlaskを見つけたので試してみました。
後述の通り、私はPythonはろくに触ったことないですが、30分程度で動作確認まで持って行けたことを考えると、とても手軽に用意できるWebサーバーではないかと思いました。
こんなことやりたかった
Flaskとは
Pythonベースの軽量Webアプリケーションフレームワークです。Webフレームワークとして必要最小限の機能を持ってます。
筆者スキル
Djangoのチュートリアルを5年前くらいに触っただけな、Python素人。多少の構文はなんとなくわかるくらい。
準備
筆者の環境
以下の環境で作成した内容を記事にしています。
- WSL2
- Ubuntu 20.04.4
- Python 3.8.7
- pipをインストール済。(pip 21.0.1)
- Flask 2.1.2 (後段の手順でインストールされたもの)
インストール
前述の通り、Python3もpipもインストール済みだったので、Flaskのインストールのみ実施しました。python3やpipが未インストールの場合はインストールしてから実施してください。
pip install Flask
インストールについてのページはこちら。
Flaskを実行する
最小構成のプログラム準備
見出しは、公式QuickStartに倣ってつけてます。
以下の内容で、server.pyファイルを作成しました。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
公式リンクの途中に書かれていますが、「flask.py」というファイル名は使ってはいけません。(Flask自身とバッティングするため)
サーバーの起動
以下の順でコマンドを実行し、サーバーを起動します。
export FLASK_APP=server
flask run
簡単に解説しますが、環境変数「FLASK_APP」に先ほど作成したファイルの拡張子を除いた名前を設定し、「flask run」を実行しています。
「flask run」を実行すると、以下のようなメッセージが出力されます。
* Running on http://127.0.0.1:5000/
※「* Running ~」以外にも起動ログは出ます。
動作の確認
ブラウザのURLに「http://localhost:5000」を入力して実行すると「Hello World」が表示されます。
これで、最低限のWebサーバーが起動できたことを確認できました。
カスタマイズ
とはいえ、Hello Worldではやりたいことが半分もできていないので、少しカスタマイズします。
ルーティングの追加
app.route()を使ってルーティングを追加して、JSONを返すURLを用意しました。(def refer())
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
# hello_worldに加筆
@app.route("/refer")
def refer():
return {
"name": "Fla Sak",
"title": "Sample"
}
ルーティングの追加についての公式URLはこちら。
Flaskを起動して、ブラウザのURLに「http://localhost:5000/refer」を入力して実行すると、JSONがブラウザに表示されます。
ちなみに、Flaskを動作させた状態でファイルを更新しても、勝手にFlaskが読み込みなおしてくれるので、明示的な再起動は要らなかったです。
おわりに
用途がリソースへのアクセスくらいなら、割と一瞬で構築できてしまうので、デバッグ用に使うには手軽に使えていいなと思いました。JSONを返すだけなら「json-server」を使うのもありなんですが、FlaskならJSON以外も取り扱えるので、そこも「いいな」と思ったポイントです。
真面目に学習するなら、公式の「QuickStart」を一通りハンズオン形式で取り組めば、一通り使えるようになりそうかな。。。(今はやらない。必要そうなら都度取り組もう。)
参考文献
とほほさんのサイトは、公式一通り見た後にアクセスした・・・
コメント