Python | FastAPIでAPI作成 ~その3:パスパラメータとクエリパラメータ~
- 2022.07.15
- FAST API
前回の続きです。前回の記事はここから↓
今回はパスパラメータとクエリパラメータについて学びました。
目次
パスパラメータとクエリパラメータ
以下の様な違いがあります。
パスパラメータ
「/」の後ろにパラメータを書く
例)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¶m2=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¶m2=param2」
と記載しています。
結果
結果は以下の通りです。
http://localhost:8000/multi_path/param1/5/param2/4
http://localhost:8000/multi_query?param1=5¶m2=4
以上です!
-
前の記事
Python | FastAPIでAPI作成 ~その2:パスパラメータ~ 2022.07.14
-
次の記事
Python | FastAPIでAPI作成 ~その4:GETでデータ取得 2022.07.17