こんにちは。
野中やすおです。
今回の記事ではFastAPIにおけるクエリパラメータの書き方について学習したいと思います。
FastAPI framework, high performance, easy to learn, fast to …
FastAPI framework, high performance, easy to learn, fast to …
クエリパラメータの概要
パスパラメータではない関数パラメータを宣言すると、それらは自動的に “クエリ” パラメータとして解釈されます。
公式チュートリアルにも記述があるようにFastAPIでは、パスパラメータ(Path Parameter)ではないパラメータを関数として宣言した場合、自動的にクエリパラメータ(Query Parameter)とみなされます。
1 2 3 4 5 6 7 8 9 |
from fastapi import FastAPI app = FastAPI() fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}] @app.get("/items/") async def read_item(skip: int = 0, limit: int = 10): return fake_items_db[skip : skip + limit] |
上記は公式そのままのサンプルコードですが、クエリはURL内で ?
の後に続くキー・バリューの組み合わせで、 &
で区切られます。
1 |
http://127.0.0.1:3000/items/?skip=0&limit=10 |
上記のURLの場合だとクエリパラメータは、値が0のskip、値が10のlimitになります。これらの値はURL内の一部のため、本来は文字列と解されますが、int型で宣言しているためにパラメータはint
型への変換とバリデーションがおこなれるそうです。
パラメータのデフォルト値
クエリパラメータはパスの固定部分ではないということで、オプショナル(必須でない)としたり、デフォルト値をもつことができます。
オプショナルなパラメータ
1 2 3 4 5 6 7 8 |
from typing import Optional from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: str, q: Optional[str] = None): if q: return {"item_id": item_id, "q": q} return {"item_id": item_id} |
デフォルト値を None
とすることで、オプショナルなクエリパラメータを宣言できるそうです。