クエリパラメータの基本
FastAPIでは、クエリパラメータは関数の引数として定義されます。これらの引数は自動的にクエリパラメータとして認識され、その型に基づいてバリデーションが行われます。
例えば、以下のようにitem_id
というクエリパラメータを持つエンドポイントを定義することができます。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(item_id: int):
return {"item_id": item_id}
このエンドポイントは/items/?item_id=5
のようにアクセスすることで、item_id
の値を取得することができます。
また、FastAPIではデフォルト値を設定することも可能です。デフォルト値を設定した場合、そのパラメータはオプショナルとなります。
@app.get("/items/")
async def read_items(item_id: int = None):
return {"item_id": item_id}
このエンドポイントはクエリパラメータなしで/items/
とアクセスすることも可能で、その場合item_id
はNoneとなります。クエリパラメータを指定した場合はその値が使用されます。
以上がFastAPIにおけるクエリパラメータの基本的な使い方です。次のセクションでは、クエリパラメータの型変換について詳しく説明します。
クエリパラメータの型変換
FastAPIでは、クエリパラメータの型変換も自動的に行われます。関数の引数として定義したパラメータの型に基づいて、適切な型への変換が行われます。
例えば、以下のようにitem_id
というクエリパラメータを整数型(int
)として定義した場合、クエリパラメータの値は自動的に整数に変換されます。
@app.get("/items/")
async def read_items(item_id: int):
return {"item_id": item_id}
このエンドポイントは/items/?item_id=5
のようにアクセスすることで、item_id
の値を整数として取得することができます。
また、クエリパラメータの値が指定した型に変換できない場合、FastAPIは自動的にエラーレスポンスを返します。これにより、型の不一致によるエラーを防ぐことができます。
以上がFastAPIにおけるクエリパラメータの型変換についての説明です。次のセクションでは、必須のクエリパラメータについて詳しく説明します。
必須のクエリパラメータ
FastAPIでは、関数の引数として定義したクエリパラメータはデフォルトでは必須となります。つまり、クエリパラメータが指定されていない場合、FastAPIは自動的にエラーレスポンスを返します。
例えば、以下のようにitem_id
というクエリパラメータを定義した場合、このパラメータは必須となります。
@app.get("/items/")
async def read_items(item_id: int):
return {"item_id": item_id}
このエンドポイントは/items/?item_id=5
のようにアクセスすることで、item_id
の値を取得することができます。しかし、/items/
のようにクエリパラメータなしでアクセスした場合、FastAPIはエラーレスポンスを返します。
以上がFastAPIにおける必須のクエリパラメータについての説明です。次のセクションでは、オプショナルなクエリパラメータについて詳しく説明します。
オプショナルなクエリパラメータ
FastAPIでは、関数の引数にデフォルト値を設定することで、その引数をオプショナルなクエリパラメータとすることができます。デフォルト値が設定されたクエリパラメータは、クエリパラメータが指定されていない場合でもエラーにならず、デフォルト値が使用されます。
例えば、以下のようにitem_id
というクエリパラメータをオプショナルとして定義することができます。
@app.get("/items/")
async def read_items(item_id: int = None):
return {"item_id": item_id}
このエンドポイントは/items/?item_id=5
のようにアクセスすることで、item_id
の値を取得することができます。また、/items/
のようにクエリパラメータなしでアクセスした場合でもエラーにならず、item_id
はNoneとなります。
以上がFastAPIにおけるオプショナルなクエリパラメータについての説明です。次のセクションでは、クエリパラメータのバリデーションについて詳しく説明します。
クエリパラメータのバリデーション
FastAPIでは、クエリパラメータのバリデーションも自動的に行われます。関数の引数として定義したパラメータの型に基づいて、適切な型への変換が試みられ、その型に変換できない場合はエラーレスポンスが返されます。
例えば、以下のようにitem_id
というクエリパラメータを整数型(int
)として定義した場合、クエリパラメータの値が整数に変換できない場合はエラーレスポンスが返されます。
@app.get("/items/")
async def read_items(item_id: int):
return {"item_id": item_id}
このエンドポイントは/items/?item_id=5
のようにアクセスすることで、item_id
の値を整数として取得することができます。しかし、/items/?item_id=abc
のように整数に変換できない値を指定した場合、FastAPIはエラーレスポンスを返します。
また、FastAPIではPydanticモデルを使用してより詳細なバリデーションを行うことも可能です。これにより、特定の値の範囲や文字列のパターンなど、より複雑なバリデーションルールを定義することができます。
以上がFastAPIにおけるクエリパラメータのバリデーションについての説明です。これらの知識を活用して、より堅牢なAPIを設計してみてください。次のセクションでは、FastAPIのその他の機能について詳しく説明します。