【Python3】FastAPIのクエリパラメーターについて
おはこんばんにちは、せなです。
今回はクエリパラメーターの使いかたについて説明したいと思います。
クエリパラメーターとは?
パスパラメーターでは「/items/{hoge}」の様にURLパス内に変数を設定していました。
パスパラメーターについてはコチラ
クエリパラメーターは「/items?item_name="hoge"&item_number=1」の様に「?」と「&」で繋いでいく変数のことを言います。
以下のPGを記載して「http://127.0.0.1:8000/items?item_count=10&item_number=1」にアクセスしてみましょう。
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/items")
async def items(item_count: int = 1, item_number: int = 0):
return f"商品番号: {item_number}, 在庫: {item_count}"
if __name__ == "__main__":
uvicorn.run("main:app", port=8000)
以下の様な画面が表示されていると思います。
与える数を変更すれば自由に番号も在庫も変更できますね。
また、クエリパラメーターは右記の様に無視して接続することもできます。「http://127.0.0.1:8000/items」
その場合はデフォルトで設定している値が使用されます。
複数パスパラメーターとクエリパラメーターについて
複数のパスパラメーターとクエリパラメーターを同時に宣言することもできます。
以下を記載してみましょう。
複数のパスとクエリパラメーターが使用されていますね。
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/users/{user_id}/items/{item_id}")
async def user_item(
user_id: int, item_id: str, user_name: str = None, item_name: str = None, item_sold: bool = False
):
item_info = {"item_id": item_id, "user_id": user_id}
if user_name:
item_info.update({"user_name": user_name})
if item_name:
item_info.update({"item_name": item_name})
if item_sold:
item_info.update({"sold_out": "売り切れ"})
return item_info
if __name__ == "__main__":
uvicorn.run("main:app", port=8000)
「http://127.0.0.1:8000/users/1/items/2?user_name="hoge"&item_name="fuga"&item_sold=true」
にアクセスすると以下の様な画面が表示されると思います。
最後に
クエリパラメータについては以上です。
使い方は難しいものではないですが、割と使用頻度は高いのでうまく使える様になりたいですね。
ではでは〜
ディスカッション
コメント一覧
まだ、コメントがありません