FastAPIのクエリパラメータについて

クエリパラメータの基本

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のその他の機能について詳しく説明します。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です