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.

3.0 KiB

スキーマの追加 - 例

JSON Schemaに追加する情報を定義することができます。

一般的なユースケースはこのドキュメントで示されているようにexampleを追加することです。

JSON Schemaの追加情報を宣言する方法はいくつかあります。

Pydanticのschema_extra

Pydanticのドキュメント: スキーマのカスタマイズで説明されているように、Configschema_extraを使ってPydanticモデルの例を宣言することができます:

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

その追加情報はそのまま出力され、JSON Schemaに追加されます。

Fieldの追加引数

後述するFieldPathQueryBodyなどでは、任意の引数を関数に渡すことでJSON Schemaの追加情報を宣言することもできます:

{!../../../docs_src/schema_extra_example/tutorial002.py!}

!!! warning "注意" これらの追加引数が渡されても、文書化のためのバリデーションは追加されず、注釈だけが追加されることを覚えておいてください。

Bodyの追加引数

追加情報をFieldに渡すのと同じように、PathQueryBodyなどでも同じことができます。

例えば、Bodyにボディリクエストのexampleを渡すことができます:

{!../../../docs_src/schema_extra_example/tutorial003.py!}

ドキュメントのUIの例

上記のいずれの方法でも、/docsの中では以下のようになります:

技術詳細

exampleexamplesについて...

JSON Schemaの最新バージョンではexamplesというフィールドを定義していますが、OpenAPIはexamplesを持たない古いバージョンのJSON Schemaをベースにしています。

そのため、OpenAPIでは同じ目的のためにexampleを独自に定義しており(examplesではなくexampleとして)、それがdocs UI(Swagger UIを使用)で使用されています。

つまり、exampleはJSON Schemaの一部ではありませんが、OpenAPIの一部であり、それがdocs UIで使用されることになります。

その他の情報

同じように、フロントエンドのユーザーインターフェースなどをカスタマイズするために、各モデルのJSON Schemaに追加される独自の追加情報を追加することができます。