開発環境
  • Python:3.8.2
  • Flask:1.1.2

Flaskとは

Python用のマイクロフレームワークです。

何がマイクロと問われると私も自身が無いのですが、Djangoとかメジャーなフレームワークと比較して機能が少ない、つまり必要最低限の機能を備えたフレームワークらしいです。

その為、開発の途中で「これ足りないな」と思ったときに追加しながら開発していくスタイルになります。

あと、ファイル構成が本当にシンプルです。

パラメータの取得方法

ネット上の記事を探すと、WebAPIに特化した記事が少なかった印象です。

なので次に紹介するそれぞれの方法を引き当てるまでに結構な時間を…。

パスパラメータの場合

パスパラメータとは、エンドポイントにパラメータを含める形式を指します。

この場合はルーティングを「/user/<user_id>」の様に、パスパラメータを不等号で囲って定義します。

そこに入ってくるパラメータは、関数の引数として取得することが出来ます。

from flask import Flask

app = Flask(__name__)

@app.route("/user/<user_id>", methods=["GET"])
def get_user(user_id):
    try:
        user_id
    ~略~

クエリパラメータの場合

クエリパラメータとは、エンドポイントの後ろにパラメータをくっつける形式を指します。

この場合はフレームワークがクエリパラメータをオブジェクトの中に格納してくれるので、それを取得するだけです。

以下は、「/user?user_id=1」のリクエストURLの例です。

from flask import Flask, request

app = Flask(__name__)

@app.route("/user", methods=["GET"])
def get_user():
    try:
        req = request.args
        user_id = req.get("user_id")
    ~略~

リクエスト情報がrequestオブジェクトに格納され、クエリパラメータはその中のargsプロパティに格納されています。

argsから個別のパラメータを取得するにはgetメソッドで引数にキー値を渡します。

リクエストパラメータの場合

リクエストパラメータとは、(ここでは)POSTリクエストなどでBody部に含めるパスのことを指します。

以下はBody部に「{“user_id”:1}」というJSONデータを含めてリクエストした例です。

from flask import Flask, request

app = Flask(__name__)

@app.route("/user", methods=["POST"])
def post_user():
    try:
        req = request.json
        user_id = req.get("user_id")
    ~略~

クエリパラメータと同じように。Body部のJSONデータはjsonプロパティに格納され、getメソッドで取得することが出来ます。

まとめ

FlaskでHttpリクエストのパラメータを取得する方法
  • パスパラメータの場合
    • ルーティング設定で、パラメータの変数名を不等号で囲って定義する。
    • 関数の引数として設定する。
  • クエリパラメータの場合
    • requestオブジェクトのargsプロパティに格納される。
    • getメソッドの引数にキー値を渡すことで取得する。
  • リクエストパラメータの場合
    • requestオブジェクトのjsonプロパティに格納される。
    • getメソッドの引数にキー値を渡すことで取得する。

フロント側の記事ではrequestオブジェクトのformプロパティなども出てくるので、開発開始当初は結構躓きました。

以上です。

 

スポンサーリンク