【Python, Webアプリ入門】Flaskを使ってみる(GET, POST処理)

Pythonで簡単にWebアプリを作成できるFlaskを使っていこうと思います。

私自身は業務でPythonを使ってWebアプリを作ったことがないので、
勉強しながら執筆していきます。

間違っていたところなどがあれば指摘していただければと思います。

今回はFlaskを使ってWebアプリでは基本的なget、post処理を実装していこうと思います。

Flaskとは

FlaskはPythonで使えるWebアプリのフレームワークの1つです。

https://en.wikipedia.org/wiki/Flask_(web_framework)

小さくシンプルをコンセプトに作られたフレームワークですので、
初心者でも簡単に始めることができます。

Flaskのインストールはpipを使えば以下のコマンドで簡単にできます。

pip install -U Flask

では、GET、POST処理を行うWebアプリを作っていきます。

GET処理、POST処理を実装してみる

GET処理

GET処理を行うWebアプリは以下のようなコードで実現できます。

# -*- coding: utf-8 -*-

from flask import Flask, request

app = Flask(__name__)


@app.route("/", methods=["GET"])
def index():
    if request.method == "GET":
        return "hello world"


if __name__ == "__main__":
    app.run()

このコードを実行するとWebサーバー起動します。
http://127.0.0.1:5000/
にブラウザからアクセスすると「hello world」といったページが表示されます。

上記のコードでは、

app = Flask(__name__)

で、アプリの初期化を行っています。

GETリクエストを行うと上述したコードのindexメソッドに飛び、GETリクエストであれば、「hello world」を返すように実装されています。

かなりシンプルですね!

POST処理

同様にPOST処理も簡単に実装できます。

# -*- coding: utf-8 -*-

from flask import Flask, request

app = Flask(__name__)


@app.route("/", methods=["POST"])
def index():
    if request.method == "POST":
        data = request.form["data"]
        print("posted data:{}".format(data))
        return "posted !"


if __name__ == "__main__":
    app.run()

上記のコードでPOST処理を受け付けています。
POSTされたデータrequest.formの中に格納されています。
上記のコードを試すために、別のコンソールを開き以下のコマンドでPOSTリクエストを送ってみましょう。

curl -d data="hello" http://127.0.0.1:5000/

そうすると、サーバー側では受け取ったデータ「hello」が出力されると思います。
POSTされたデータを受け取れていることがわかります。

GETとPOSTの両方を受け取る

GETとPOST処理を同じurlで受け取る時は同じメソッド内でGETとPOSTを識別すれば実現可能です。以下のようなコードで実現できます。

# -*- coding: utf-8 -*-

from flask import Flask, request

app = Flask(__name__)


@app.route("/", methods=["GET", "POST"])
def index():
    if request.method == "GET":     # GET
        return "get"
    else:       # POST
        data = request.form["data"]
        print("posted data:{}".format(data))
        return "posted !"


if __name__ == "__main__":
    app.run()

コードを見てもらえばわかるように、 request.method で識別することができます。

終わりに

今回は簡単にですが、Flaskを使ったGET、POST処理の実装を行いました。
非常に簡単にできるので便利でした。
少しずつ複雑なこともしていこうと思います。

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