0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flask入門➁:route()デコレータ編

Posted at

はじめに

Flask入門パート➁です。
前回はFlaskのインストールとコマンドラインでの起動を行いました。
前回の記事はこちら

route()デコレータ

route()デコレータを使用することで、関数とURLを紐づけることができます。
@app.route()が該当の箇所となっており、ブラウザなどから該当のURLにアクセスされた際に、下の関数を実行します。

hello.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "<p>Home</p>"

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

@app.route("/health")
def health():
    return "<p>正常稼働中</p>"

実際にローカルで動かしてみましょう。
下記のコマンドで、アプリケーションを起動します。

$ flask --app hello run

そして、Webブラウザからroute()に記載をしたURLへアクセスを行います。
特にパスを指定しないと/で記載した内容が表示されています。
image.png

パスを/hello/healthにした場合は表示内容がそれぞれの関数で指定した内容に変わりました。
image.png

image.png

このように、route()デコレータを活用することで、パスに応じた処理内容を定義することができます。

変数の利用

route()デコレータで使用するパスを/<変数名>とすることで、URLに変数セクションを設定できます。
また、</データ型:変数名>とすることで、データ型を指定することも可能です。

hello.py
from flask import Flask
from markupsafe import escape

app = Flask(__name__)

@app.route("/<string:username>")
def hello(username):
    return f"Hello, {escape(username)}!"

上記では、usernameという変数を定義して関数で利用しています。
ブラウザから確認するとusernameが入力した値に変わっていることが確認できます。
image.png

変数で利用できるデータ型は以下の通りです。

  • string(default):スラッシュを除く任意の文字列
  • int:正の整数
  • float:正の浮動小数
  • path:スラッシュを含む文字列
  • uuid:uuid値

メソッドの指定

route()デコレータのmethods引数を設定することで、URLアクセス時のHTTPメソッドに応じた処理を定義することができます。
デフォルトでは、GETのみに対応していますが、引数によってPOSTやDELETEなども追加できます。

hello.py
from flask import Flask, request
from markupsafe import escape

app = Flask(__name__)

@app.route("/method", methods=["GET", "POST"])
def method():
    if request.method == "POST":
        return "You sent a POST request!"
    elif request.method == "GET":
        return "You sent a GET request!"
    else:
        return "Other method"

上記では、POST or GET or それ以外 で処理が分かれるようにしています。
ブラウザから直接アクセスすると、GETとして処理されていることがわかります。
image.png

curlからメソッド指定でPOSTの通信を行うと、POST用に用意した処理が行われていることが確認できます。

$ curl -X POST http://localhost:5000/method
You sent a POST request!

まとめ

今回はFlaskの基本となるroute()デコレータについて学びました。
AI + 以下サイトを参考にさせていただいています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?