pythonasyncioapiasyncfastapiframeworkjsonjson-schemaopenapiopenapi3pydanticpython-typespython3redocreststarletteswaggerswagger-uiuvicornweb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.5 KiB
2.5 KiB
ボディ - フィールド
Query
やPath
、Body
を使って path operation関数 のパラメータに追加のバリデーションやメタデータを宣言するのと同じように、PydanticのField
を使ってPydanticモデルの内部でバリデーションやメタデータを宣言することができます。
Field
のインポート
まず、以下のようにインポートします:
{!../../../docs_src/body_fields/tutorial001.py!}
!!! warning "注意"
Field
は他の全てのもの(Query
、Path
、Body
など)とは違い、fastapi
からではなく、pydantic
から直接インポートされていることに注意してください。
モデルの属性の宣言
以下のようにField
をモデルの属性として使用することができます:
{!../../../docs_src/body_fields/tutorial001.py!}
Field
はQuery
やPath
、Body
と同じように動作し、全く同様のパラメータなどを持ちます。
!!! note "技術詳細"
実際には次に見るQuery
やPath
などは、共通のParam
クラスのサブクラスのオブジェクトを作成しますが、それ自体はPydanticのFieldInfo
クラスのサブクラスです。
また、Pydanticの`Field`は`FieldInfo`のインスタンスも返します。
`Body`は`FieldInfo`のサブクラスのオブジェクトを直接返すこともできます。そして、他にも`Body`クラスのサブクラスであるものがあります。
`fastapi`から`Query`や`Path`などをインポートする場合、これらは実際には特殊なクラスを返す関数であることに注意してください。
!!! tip "豆知識"
型、デフォルト値、Field
を持つ各モデルの属性が、Path
やQuery
、Body
の代わりにField
を持つ、path operation 関数のパラメータと同じ構造になっていることに注目してください。
追加情報の追加
追加情報はField
やQuery
、Body
などで宣言することができます。そしてそれは生成されたJSONスキーマに含まれます。
後に例を用いて宣言を学ぶ際に、追加情報を句悪方法を学べます。
まとめ
PydanticのField
を使用して、モデルの属性に追加のバリデーションやメタデータを宣言することができます。
追加のキーワード引数を使用して、追加のJSONスキーマのメタデータを渡すこともできます。