3.Flaskでのルーティング

Webブラウザのリクエストに応じて呼び出す処理を切り替えるルーティング機能を使ってみましょう。プログラムによる動的なWebページではユーザーがアクセスしたURLに応じて呼び出す処理を切り替えることで、それぞれのページに応じた異なる情報を出力しています。

目次

ルーティングとは

ルーティングはWebアプリケーションの基本となる技術の1つです。

WebブラウザからWebサーバーにリクエストが送られた時、Webサーバーはそのリクエストに応じてHTMLやCSS、画像やJavaScriptなどのファイルを返します。

それらをWebブラウザが組み合わせて1つのWebページとして表示しています。

HTMLによる静的なWebページではURLごとに予め決まった内容を返しますが、PHPやPythonといったプログラムによる動的なWebページではリクエストに応じて異なる処理を呼び出し、その結果としてHTMLページを作成して返します。

別のルートを追加

実際にルーティングによって呼び出す処理を切り替えてみましょう。

前の記事ではトップページ(ルートディレクトリのURL)にアクセスすると Hello, World! と表示するアプリケーションを作成しましたが、今回はそれ加えて、/about にアクセスすると別の処理を返すよう設定してみましょう。

# Flackクラスをインポート
from flask import Flask

# Flaskクラスのインスタンスを作成
app = Flask(__name__)

@app.route("/") # ルートディレクトリのURLをトリガーに
def index(): # 関数を定義
    return "Hello, World"

@app.route("/about") # /aboutのURLをトリガーに
def about(): # 関数を定義
    return "About Us"

flaskコマンドを使ってアプリケーションを実行し、ブラウザで確認してみましょう。

まずはトップページ(http://127.0.0.1:5000/)にアクセスしてみます。

トップページにアクセス

前回と同じようにHello, World! と表示されます。

ではURLの末尾に /about と追加して http://127.0.0.1:5000/about にアクセスしてみましょう。

/aboutにアクセス

今度は画面に About Us と表示されました。

このようにWebアプリケーションではルートに応じて呼び出す処理を設定することで、ページに表示する内容を動的に切り替えています。

GET以外のHTTPメソッドに対応する処理

WebブラウザとWebサーバー間の通信には主にGETメソッドとPOSTメソッドというHTTPメソッドを使います。

Flaskでは特に記載がない限りGETメソッドのみに応答しますが、POSTなど別のHTTPメソッドに対応したい場合はroute()デコレータのmethod引数を使用することで対応するHTTPメソッドを指定できます。

from flask import Flask, request # requestを追加

app = Flask(__name__)

@app.route("/about", methods=["GET", "POST"]) # GETメソッドとPOSTメソッドに対応
def index():
    return "Hello, World"

対応するHTTPメソッドを指定したい場合はこのようにimportにrequestを追加し、route()デコレータのmethod引数に対応したいHTTPメソッドを指定します。

このエントリーをはてなブックマークに追加

コメントを残す

頂いたコメントは一読した後表示させて頂いております。
反映まで数日かかる場合もございますがご了承下さい。