FastAPIとクエリパラメータの基本
FastAPIは、Pythonの非常に高速な(高性能な)Webフレームワークで、非常に直感的で簡単にAPIを構築できます。クエリパラメータは、URLの一部として送信される追加のパラメータで、特定の情報をフィルタリングしたり、特定の結果を取得するために使用されます。
FastAPIでは、関数のパラメータとしてクエリパラメータを定義することで、自動的にクエリパラメータを読み取ることができます。以下に基本的な例を示します。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(q: str = None):
return {"query": q}
上記の例では、q
はクエリパラメータで、URLから直接読み取られます。例えば、/items/?q=somequery
というリクエストを送ると、q
の値として"somequery"
が取得されます。
このように、FastAPIを使用すると、クエリパラメータの取得と使用が非常に簡単になります。次のセクションでは、クエリパラメータの型変換について詳しく説明します。
クエリパラメータの型変換
FastAPIは、クエリパラメータの型変換も自動的に行ってくれます。これは、Pythonの型ヒントを利用しています。以下に基本的な例を示します。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(q: str = None, page: int = 1):
return {"query": q, "page": page}
上記の例では、q
は文字列型のクエリパラメータで、page
は整数型のクエリパラメータです。これらのパラメータはURLから直接読み取られ、適切な型に変換されます。例えば、/items/?q=somequery&page=2
というリクエストを送ると、q
の値として"somequery"
が、page
の値として2
が取得されます。
このように、FastAPIを使用すると、クエリパラメータの取得と型変換が非常に簡単になります。次のセクションでは、オプショナルなクエリパラメータの扱いについて詳しく説明します。
オプショナルなクエリパラメータの扱い
FastAPIでは、クエリパラメータをオプショナル(任意)にすることも可能です。これは、特定のパラメータがURLに存在しない場合に備えて、そのパラメータをNone(Pythonのnull相当)に設定することで実現します。以下に基本的な例を示します。
from fastapi import FastAPI
from typing import Optional
app = FastAPI()
@app.get("/items/")
async def read_items(q: Optional[str] = None):
return {"query": q}
上記の例では、q
はオプショナルな文字列型のクエリパラメータです。これはtyping
モジュールのOptional
を使用して宣言されています。このパラメータはURLから直接読み取られますが、URLにq
が存在しない場合、q
の値はNone
になります。例えば、/items/
というリクエストを送ると、q
の値はNone
になります。
このように、FastAPIを使用すると、オプショナルなクエリパラメータの取得と使用が非常に簡単になります。次のセクションでは、複数のパスパラメータとクエリパラメータの同時利用について詳しく説明します。
複数のパスパラメータとクエリパラメータの同時利用
FastAPIでは、パスパラメータとクエリパラメータを同時に使用することが可能です。これにより、APIのエンドポイントがより柔軟性を持ち、多様なリクエストに対応できます。以下に基本的な例を示します。
from fastapi import FastAPI
from typing import Optional
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "query": q}
上記の例では、item_id
はパスパラメータ、q
はオプショナルなクエリパラメータです。これらのパラメータはURLから直接読み取られます。例えば、/items/5?q=somequery
というリクエストを送ると、item_id
の値として5
が、q
の値として"somequery"
が取得されます。
このように、FastAPIを使用すると、複数のパスパラメータとクエリパラメータの同時利用が非常に簡単になります。次のセクションでは、必須のクエリパラメータの宣言について詳しく説明します。
必須のクエリパラメータの宣言
FastAPIでは、クエリパラメータを必須にすることも可能です。これは、特定のパラメータがURLに存在しない場合にエラーを返すことで実現します。以下に基本的な例を示します。
from fastapi import FastAPI, Query
from typing import Optional
app = FastAPI()
@app.get("/items/")
async def read_items(q: str = Query(...)):
return {"query": q}
上記の例では、q
は必須の文字列型のクエリパラメータです。これはfastapi.Query
の...
(Ellipsis)を使用して宣言されています。このパラメータはURLから直接読み取られますが、URLにq
が存在しない場合、FastAPIはエラーを返します。例えば、/items/
というリクエストを送ると、q
の値が存在しないため、FastAPIはエラーを返します。
このように、FastAPIを使用すると、必須のクエリパラメータの宣言とエラーハンドリングが非常に簡単になります。これで、FastAPIでのクエリパラメータの効果的な利用についての説明を終わります。FastAPIを使って素晴らしいWeb APIを作成してください!