【環境構築】FlaskでさくっとWebサーバー作った

Python

はじめに

手元でJavascriptのfetch動作を確認したかったのだけど、お手頃なレスポンスを返してくれるようなWebサーバーが手元になかったのです。なので、何か簡単にWebサーバー立てれないか調べていたらFlaskを見つけたので試してみました。

後述の通り、私はPythonはろくに触ったことないですが、30分程度で動作確認まで持って行けたことを考えると、とても手軽に用意できるWebサーバーではないかと思いました。

こんなことやりたかった

Visual Studio Codeのmermaidプラグインを使って作成

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」を一通りハンズオン形式で取り組めば、一通り使えるようになりそうかな。。。(今はやらない。必要そうなら都度取り組もう。)

参考文献

Welcome to Flask — Flask Documentation (2.1.x)
Flaskへようこそ — Flask Documentation (2.0.x)
とほほのFlask入門 - とほほのWWW入門

とほほさんのサイトは、公式一通り見た後にアクセスした・・・

コメント

タイトルとURLをコピーしました