3.0 KiB
スキーマの追加 - 例
JSON Schemaに追加する情報を定義することができます。
一般的なユースケースはこのドキュメントで示されているようにexample
を追加することです。
JSON Schemaの追加情報を宣言する方法はいくつかあります。
Pydanticのschema_extra
Pydanticのドキュメント: スキーマのカスタマイズで説明されているように、Config
とschema_extra
を使ってPydanticモデルの例を宣言することができます:
{!../../../docs_src/schema_extra_example/tutorial001.py!}
その追加情報はそのまま出力され、JSON Schemaに追加されます。
Field
の追加引数
後述するField
、Path
、Query
、Body
などでは、任意の引数を関数に渡すことでJSON Schemaの追加情報を宣言することもできます:
{!../../../docs_src/schema_extra_example/tutorial002.py!}
!!! warning "注意" これらの追加引数が渡されても、文書化のためのバリデーションは追加されず、注釈だけが追加されることを覚えておいてください。
Body
の追加引数
追加情報をField
に渡すのと同じように、Path
、Query
、Body
などでも同じことができます。
例えば、Body
にボディリクエストのexample
を渡すことができます:
{!../../../docs_src/schema_extra_example/tutorial003.py!}
ドキュメントのUIの例
上記のいずれの方法でも、/docs
の中では以下のようになります:

技術詳細
example
と examples
について...
JSON Schemaの最新バージョンではexamples
というフィールドを定義していますが、OpenAPIはexamples
を持たない古いバージョンのJSON Schemaをベースにしています。
そのため、OpenAPIでは同じ目的のためにexample
を独自に定義しており(examples
ではなくexample
として)、それがdocs UI(Swagger UIを使用)で使用されています。
つまり、example
はJSON Schemaの一部ではありませんが、OpenAPIの一部であり、それがdocs UIで使用されることになります。
その他の情報
同じように、フロントエンドのユーザーインターフェースなどをカスタマイズするために、各モデルのJSON Schemaに追加される独自の追加情報を追加することができます。