FastAPIとリクエストボディの基本
FastAPIは、Pythonで書かれた非常に高速(高性能)、使いやすい、Webフレームワークです。FastAPIは、Python 3.6以降の型ヒントを使用してAPIのパラメータを宣言します。
リクエストボディは、クライアント(ユーザー)がサーバー(あなたのアプリケーション)に送信するデータの一部です。これは通常、JSON形式で送信されます。
FastAPIでは、リクエストボディは通常、Pythonの型ヒントを使用して宣言されます。FastAPIは、リクエストボディのデータを自動的に解析し、適切な型(文字列、数値、日付、リストなど)に変換します。
以下に、FastAPIを使用してリクエストボディを宣言する基本的な例を示します。
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
この例では、Item
という名前のPydanticモデルを作成しています。このモデルは、リクエストボディのデータ構造を定義します。create_item
関数は、このItem
モデルをパラメータとして受け取り、クライアントから送信されたJSONデータを自動的にこのモデルにマッピングします。
次のセクションでは、リストデータを含むリクエストボディの作成方法について詳しく説明します。
リストデータを含むリクエストボディの作成
FastAPIでは、リクエストボディにリストデータを含めることも可能です。これは、クライアントがサーバーに複数の項目やデータを一度に送信する場合に特に便利です。
リストデータを含むリクエストボディを作成するには、Pythonの型ヒントを使用してリストを宣言します。以下に、リストデータを含むリクエストボディを宣言する基本的な例を示します。
from typing import List, Optional
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
app = FastAPI()
@app.post("/items/")
async def create_items(items: List[Item]):
return items
この例では、create_items
関数はItem
モデルのリストをパラメータとして受け取ります。クライアントから送信されたJSONデータは自動的にこのモデルのリストにマッピングされます。
次のセクションでは、リストデータを含むリクエストボディの取得と利用方法について詳しく説明します。
リストデータを含むリクエストボディの取得と利用
FastAPIを使用してリストデータを含むリクエストボディを取得し、そのデータを利用する方法を見てみましょう。
前述の例では、create_items
関数はItem
モデルのリストをパラメータとして受け取り、クライアントから送信されたJSONデータを自動的にこのモデルのリストにマッピングします。このリストは、関数内で直接利用することができます。
以下に、リストデータを含むリクエストボディを取得し、そのデータを利用する基本的な例を示します。
from typing import List, Optional
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
app = FastAPI()
@app.post("/items/")
async def create_items(items: List[Item]):
item_names = [item.name for item in items]
return {"item_names": item_names}
この例では、create_items
関数はItem
モデルのリストをパラメータとして受け取り、そのリストから各アイテムの名前を取得しています。その後、取得したアイテムの名前のリストをレスポンスとして返しています。
次のセクションでは、リストデータを含むリクエストボディのバリデーション方法について詳しく説明します。
リストデータを含むリクエストボディのバリデーション
FastAPIを使用すると、リクエストボディのバリデーションも簡単に行うことができます。リストデータを含むリクエストボディのバリデーションは、特に重要です。これは、クライアントが送信するデータの形式や内容を制御するためです。
FastAPIでは、Pydanticモデルを使用してリクエストボディのバリデーションを行います。Pydanticモデルでは、フィールドの型だけでなく、フィールドの値に対するさまざまな制約も定義することができます。
以下に、リストデータを含むリクエストボディのバリデーションを行う基本的な例を示します。
from typing import List, Optional
from fastapi import FastAPI
from pydantic import BaseModel, Field
class Item(BaseModel):
name: str = Field(..., min_length=1, max_length=100)
description: Optional[str] = Field(None, max_length=300)
price: float = Field(..., gt=0)
tax: Optional[float] = Field(None, ge=0)
app = FastAPI()
@app.post("/items/")
async def create_items(items: List[Item]):
return items
この例では、Item
モデルの各フィールドに対して、Field
関数を使用してバリデーションルールを定義しています。name
フィールドは1文字以上100文字以下、price
フィールドは0より大きい値、tax
フィールドは0以上の値であることを要求しています。
このように、FastAPIとPydanticを使用すると、リストデータを含むリクエストボディのバリデーションを簡単に行うことができます。
次のセクションでは、本記事のまとめを行います。
まとめ
この記事では、Pythonの高速なWebフレームワークであるFastAPIを使用して、リストデータを含むリクエストボディを扱う方法について詳しく説明しました。
まず、FastAPIとリクエストボディの基本について説明しました。次に、リストデータを含むリクエストボディの作成方法について学びました。その後、リストデータを含むリクエストボディの取得と利用方法について説明しました。最後に、リストデータを含むリクエストボディのバリデーション方法について説明しました。
FastAPIは、Pythonの型ヒントを活用することで、リクエストボディのデータを自動的に解析し、適切な型に変換します。また、Pydanticモデルを使用することで、リクエストボディのバリデーションも簡単に行うことができます。
これらの機能により、FastAPIは、リストデータを含むリクエストボディを効率的に扱うための強力なツールとなります。これらの知識を活用して、より効率的なWebアプリケーションの開発を進めていきましょう。それでは、Happy coding! 🚀
0件のコメント