Browse Source
Co-authored-by: ryusuke.miyaji <[email protected]> Co-authored-by: ryuckel <[email protected]> Co-authored-by: tokusumi <[email protected]> Co-authored-by: T. Tokusumi <[email protected]> Co-authored-by: Sebastián Ramírez <[email protected]>pull/10972/head
committed by
GitHub
1 changed files with 58 additions and 0 deletions
@ -0,0 +1,58 @@ |
|||
# スキーマの追加 - 例 |
|||
|
|||
JSON Schemaに追加する情報を定義することができます。 |
|||
|
|||
一般的なユースケースはこのドキュメントで示されているように`example`を追加することです。 |
|||
|
|||
JSON Schemaの追加情報を宣言する方法はいくつかあります。 |
|||
|
|||
## Pydanticの`schema_extra` |
|||
|
|||
<a href="https://pydantic-docs.helpmanual.io/usage/schema/#schema-customization" class="external-link" target="_blank">Pydanticのドキュメント: スキーマのカスタマイズ</a>で説明されているように、`Config`と`schema_extra`を使ってPydanticモデルの例を宣言することができます: |
|||
|
|||
```Python hl_lines="15 16 17 18 19 20 21 22 23" |
|||
{!../../../docs_src/schema_extra_example/tutorial001.py!} |
|||
``` |
|||
|
|||
その追加情報はそのまま出力され、JSON Schemaに追加されます。 |
|||
|
|||
## `Field`の追加引数 |
|||
|
|||
後述する`Field`、`Path`、`Query`、`Body`などでは、任意の引数を関数に渡すことでJSON Schemaの追加情報を宣言することもできます: |
|||
|
|||
```Python hl_lines="4 10 11 12 13" |
|||
{!../../../docs_src/schema_extra_example/tutorial002.py!} |
|||
``` |
|||
|
|||
!!! warning "注意" |
|||
これらの追加引数が渡されても、文書化のためのバリデーションは追加されず、注釈だけが追加されることを覚えておいてください。 |
|||
|
|||
## `Body`の追加引数 |
|||
|
|||
追加情報を`Field`に渡すのと同じように、`Path`、`Query`、`Body`などでも同じことができます。 |
|||
|
|||
例えば、`Body`にボディリクエストの`example`を渡すことができます: |
|||
|
|||
```Python hl_lines="21 22 23 24 25 26" |
|||
{!../../../docs_src/schema_extra_example/tutorial003.py!} |
|||
``` |
|||
|
|||
## ドキュメントのUIの例 |
|||
|
|||
上記のいずれの方法でも、`/docs`の中では以下のようになります: |
|||
|
|||
<img src="https://fastapi.tiangolo.com/img/tutorial/body-fields/image01.png"> |
|||
|
|||
## 技術詳細 |
|||
|
|||
`example` と `examples`について... |
|||
|
|||
JSON Schemaの最新バージョンでは<a href="https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.9.5" class="external-link" target="_blank">`examples`</a>というフィールドを定義していますが、OpenAPIは`examples`を持たない古いバージョンのJSON Schemaをベースにしています。 |
|||
|
|||
そのため、OpenAPIでは同じ目的のために<a href="https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#fixed-fields-20" class="external-link" target="_blank">`example`</a>を独自に定義しており(`examples`ではなく`example`として)、それがdocs UI(Swagger UIを使用)で使用されています。 |
|||
|
|||
つまり、`example`はJSON Schemaの一部ではありませんが、OpenAPIの一部であり、それがdocs UIで使用されることになります。 |
|||
|
|||
## その他の情報 |
|||
|
|||
同じように、フロントエンドのユーザーインターフェースなどをカスタマイズするために、各モデルのJSON Schemaに追加される独自の追加情報を追加することができます。 |
Loading…
Reference in new issue