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

ボディ - フィールド

QueryPathBodyを使って path operation関数 のパラメータに追加のバリデーションやメタデータを宣言するのと同じように、PydanticのFieldを使ってPydanticモデルの内部でバリデーションやメタデータを宣言することができます。

Fieldのインポート

まず、以下のようにインポートします:

{!../../../docs_src/body_fields/tutorial001.py!}

!!! warning "注意" Fieldは他の全てのもの(QueryPathBodyなど)とは違い、fastapiからではなく、pydanticから直接インポートされていることに注意してください。

モデルの属性の宣言

以下のようにFieldをモデルの属性として使用することができます:

{!../../../docs_src/body_fields/tutorial001.py!}

FieldQueryPathBodyと同じように動作し、全く同様のパラメータなどを持ちます。

!!! note "技術詳細" 実際には次に見るQueryPathなどは、共通のParamクラスのサブクラスのオブジェクトを作成しますが、それ自体はPydanticのFieldInfoクラスのサブクラスです。

また、Pydanticの`Field`は`FieldInfo`のインスタンスも返します。

`Body`は`FieldInfo`のサブクラスのオブジェクトを直接返すこともできます。そして、他にも`Body`クラスのサブクラスであるものがあります。

`fastapi`から`Query`や`Path`などをインポートする場合、これらは実際には特殊なクラスを返す関数であることに注意してください。

!!! tip "豆知識" 型、デフォルト値、Fieldを持つ各モデルの属性が、PathQueryBodyの代わりにFieldを持つ、path operation 関数のパラメータと同じ構造になっていることに注目してください。

追加情報の追加

追加情報はFieldQueryBodyなどで宣言することができます。そしてそれは生成されたJSONスキーマに含まれます。

後に例を用いて宣言を学ぶ際に、追加情報を句悪方法を学べます。

まとめ

PydanticのFieldを使用して、モデルの属性に追加のバリデーションやメタデータを宣言することができます。

追加のキーワード引数を使用して、追加のJSONスキーマのメタデータを渡すこともできます。