Ceeds Academy教材アプリ教材・症状語・タグで検索
索引グラフ試す
アプリFW/ライブラリ▸FastAPI

FastAPI: リクエストバリデーション(Pydantic)

hands-on所要 25分最新草稿
前提: FastAPI: ルーティングとパラメータ(パス/クエリ)→次: FastAPI: REST と CRUD(GET/POST/PUT/DELETE)
意味グラフ(この教材と内容的に近い教材・1ネスト)
例え(Analogies)
Pydantic=注文票の検品

Pydanticモデルは「注文票の様式」。送られたデータが様式通りかを自動で検品し、不備があれば422で返す。人間が毎回チェックしなくて済む。

概要

📍 app-frameworks ▸ FastAPI ▸ リクエストバリデーション | 種別: hands-on | facts_as_of 2026-06(FastAPI 0.136 / Pydantic v2)

公式ドキュメント — hands-on

🎞 スライド

バリデーション=「形に合うか自動チェック」

Pydantic モデルで入力の型を宣言

流れ(テキスト図)

[JSON ボディ] ──▶ [Pydantic モデル Item] ──┬─ 合えば ─▶ 関数で使う
└─ 合わねば ─▶ 422 を自動返却

書くのは「形」だけ

name: str / price: float → 検証もスキーマも自動

—
出典(sources)

fastapi.tiangolo.com (Request Body) ; Pydantic v2 ; 2026-06確認

確認問題(Review-Questions)
Pydantic検証に失敗した時のHTTPステータスは?択一
基礎公式
解答・解説▾ 開く

422。

name(str)とprice(float)を持つItemをPydanticで定義せよ。コード
基礎公式
解答・解説▾ 開く

class Item(BaseModel):n name: strn price: float

目次
例え概要公式ドキュメント出典確認問題
鮮度
最新
更新: 2026-06-15
次回棚卸し: 2026-12-15
周期: 6か月
版: FastAPI 0.136 / Pydantic v2

概要

リクエストボディを Pydantic モデルで検証する。型に合わない入力は自動で 422 を返し、/docs にもスキーマが反映される。「形を宣言するだけ」で検証が済むのが要点。

公式ドキュメント準拠(FastAPI 0.136 / Pydantic v2)

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float

@app.post("/items")
def create_item(item: Item):
    return item
  • BaseModel で形を定義 → 検証は自動。/docs にスキーマが反映される。
  • 引数に item: Item と型注釈を付けることで、ボディが Pydantic で検証される。

出典: FastAPI: Request Body

🧭 誤解訂正集

よくある誤解 正しい理解
検証コードを自分で書く Pydantic モデルを宣言すれば自動
422 はサーバのバグ 入力が形に合わない正常な応答(クライアント起因)
モデルにしてもドキュメントは別 /docs にスキーマが自動反映される

📖 用語

  • バリデーション … 入力が決めた型/形に合うかの検証。
  • Pydantic … 型に基づき検証・変換する Python ライブラリ(FastAPI の基盤)。
  • BaseModel … Pydantic でデータの形を定義する基底クラス。
  • リクエストボディ … POST 等で送る本文データ(多くは JSON)。

✅ 確認の目安(can-do)

Pydantic モデルでリクエストボディの形を宣言でき、**「なぜ検証コードを書かずに 422 が返るのか・/docs に反映されるのか」**を説明できる。

⚠️ エラー復旧集

症状 原因 復旧
422 validation error 必須/型不適合 モデルの必須・型を確認して送る
ボディが読めない 型注釈に BaseModel 未指定 引数に item: Item と型を付ける