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.9 KiB

スキーマの追加 - 例

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

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

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

Pydanticのschema_extra

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

{* ../../docs_src/schema_extra_example/tutorial001.py hl[15,16,17,18,19,20,21,22,23] *}

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

Fieldの追加引数

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

{* ../../docs_src/schema_extra_example/tutorial002.py hl[4,10,11,12,13] *}

/// warning | 注意

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

///

Bodyの追加引数

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

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

{* ../../docs_src/schema_extra_example/tutorial003.py hl[21,22,23,24,25,26] *}

ドキュメントの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に追加される独自の追加情報を追加することができます。