Python | FastAPIでAPI作成 ~その3:パスパラメータとクエリパラメータ~

Python | FastAPIでAPI作成 ~その3:パスパラメータとクエリパラメータ~

前回の続きです。前回の記事はここから↓

今回はパスパラメータとクエリパラメータについて学びました。

パスパラメータとクエリパラメータ

以下の様な違いがあります。

パスパラメータ

「/」の後ろにパラメータを書く

例)http://localhost:8000/hoge_app/hoge

クエリパラメータ

「?」の後ろにパラメータを書く。

例)http://locahost:8000/hoge_app?hoge=”hoge”

実際にプログラムを書く

前回の「偶数/奇数」判定のプログラムを以下の様に改造します。

from fastapi import FastAPI
app = FastAPI() #インスタンスを作成

#パスパラメータ
#http://localhost:8000/even_odd_app_path/33
@app.get("/even_odd_app_path/{item_param}")
async def even_odd(item_param:float):
    if item_param % 2 == 0:
        return {"param":item_param, "even/odd":"even"}
    else:
        return {"param":item_param, "even/odd":"odd"}

#クエリパラメータ
#http://localhost:8000/even_odd_app_query?item_param=33
@app.get("/even_odd_app_query")
async def even_odd(item_param:float):
    if item_param % 2 == 0:
        return {"param":item_param, "even/odd":"even"}
    else:
        return {"param":item_param, "even/odd":"odd"}

結果

結果はそれぞれ以下の通りです。

http://localhost:8000/even_odd_app_path/33

http://localhost:8000/even_odd_app_query?item_param=33

パスパラメータ、クエリパラメータを複数使うには?

では複数の引数を持たせるにはどうすればよいでしょうか?

param1、param2を渡して、param1*param2の結果を返す仕組みを作って検証します。

先ほど作成したプログラムに、以下のコードを追加します。

# http://localhost:8000/multi_path/param1/5/param2/4
@app.get("/multi_path/param1/{param1}/param2/{param2}")
async def multi(param1:float, param2:float):
    return {"param1":param1,"param2":param2,"param1*param2":param1*param2}


# http://localhost:8000/multi_query?param1=5&param2=4
@app.get("/multi_query")
async def multi(param1:float, param2:float):
    return {"param1":param1,"param2":param2,"param1*param2":param1*param2}
   

パスパラメータの場合は 「/param1/{param1}/param2/{param2}」

クエリパラメータの場合は「?param1=param1&param2=param2」

と記載しています。

結果

結果は以下の通りです。

http://localhost:8000/multi_path/param1/5/param2/4

http://localhost:8000/multi_query?param1=5&param2=4

以上です!