【Python】FlaskでWebアプリケーションを作る③ -ルーティング

これまでにFlaskを使った最も簡単なアプリケーションを作成する方法を紹介しました。今回はそのアプリケーションをもう少し拡張してみます。

今回はルーティングを使ってWebアプリケーションでできる処理を増やしてみます。

ルーティングとは

webアプリケーションにおけるルーティングとは、クライアントのリクエスト内容とサーバでの処理を紐づけることを指します。

もう少し具体的に言うと、URLとアプリケーション(サーバ側)の処理を紐づけることです。クライアントは実行したいURLに対してリクエストを投げ、サーバではそのURLに対応する処理が実行され、クライアントに何等かの結果が返されます。

webアプリケーションでよく用いられるリクエストの方法として、HTTPメソッドがあります。

Flaskでルーティングを実装する

では、実際にFlaskでルーティングを実装し、URLと実行する処理を紐づけてみます。以下に、いくつかの例を盛り込んだサンプルコードを示します。flaskの基本となるプログラムです。

from flask import Flask
from flask import request

print(__name__)
app = Flask(__name__)


@app.route("/")
def main_page():
    return "<p>This is the main page</p>"

@app.route("/hello")
def hello():
    return "<p>Hello World!</p>"

@app.route("/yourJob/<job>")
def show_user_profile(job):
    return "Your Job: " + str(job)

@app.route("/http" , methods=['GET', 'POST'])
def http():
    if request.method == 'POST':
        return "<p>POST</p>"
    elif request.method == 'GET':
        return "<p>GET</p>"
    else:
        return "<p>Anything else</p>"


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

ルーティングは@app.route()で制御します。ベースとなるURL以下の階層を指定し、その下にそのURLに紐づく処理を記述します。

以下で、各URLを指定した際の挙動を順に確認します。Flaskでwebアプリケーションを起動した際のデフォルトは http://127.0.0.1:5000(localhost)です。

指定なし

ルーティングと特に指定しない場合、def main_page()の処理が実行されます。特に指定しないと言っても、@app.route(“/”)の記述は必要です。

http://127.0.0.1:5000/

http://127.0.0.1:5000/

指定する場合

@app.route(“/hello”)を指定し、Hello World!という文字列を画面に表示させます。

http://127.0.0.1:5000/hello

http://127.0.0.1:5000/hello

何も指定しなかった場合と画面に表示される処理が変わっています。このように、URLと実行する処理を紐づけるのがルーティングです。

URLで引数を渡す場合

URLの中で処理に対して引数を渡すこともできます。引数を渡す場合は@app.route(“/yourJob/<job>”)のように記載し、yourJob/以下の値がjobという変数名で渡されます。

変数を渡す場合は<>で括ります。例えば、

http://127.0.0.1:5000/yourJob/sales

とした場合、’sales’という値が変数jobとして処理に渡されます。上記の例では戻り値としてjobが画面に表示されます。

http://127.0.0.1:5000/yourJob/sales

HTTPメソッド

@app.route(“/http” , methods=[‘GET’, ‘POST’])のように指定することで、HTTPメソッド(この場合はGETとPOST)を許可することができます。

@app.route("/http" , methods=['GET', 'POST'])
def http():
    if request.method == 'POST':
        return "<p>POST</p>"
    elif request.method == 'GET':
        return "<p>GET</p>"
    else:
        return "<p>Anything else</p>"

特にPOSTメソッドで通信する場合、上記の指定をしないとエラーとなるので注意してください。

まとめ

Flaskを使ったWebアプリケーションでルーティングを実装する方法を紹介しました。これによってWebアプリケーションで様々な処理を実行したり、画面遷移をすることが可能になります。

ルーティングの動きを理解して、少しずつWebアプリケーションを動きのあるものにしていきましょう。

ではでは👋