committed by
GitHub
2 changed files with 70 additions and 0 deletions
@ -0,0 +1,69 @@ |
|||
# Body - Поля |
|||
|
|||
Таким же способом, как вы объявляете дополнительную валидацию и метаданные в параметрах *функции обработки пути* с помощью функций `Query`, `Path` и `Body`, вы можете объявлять валидацию и метаданные внутри Pydantic моделей, используя функцию `Field` из Pydantic. |
|||
|
|||
## Импорт `Field` |
|||
|
|||
Сначала вы должны импортировать его: |
|||
|
|||
=== "Python 3.6 и выше" |
|||
|
|||
```Python hl_lines="4" |
|||
{!> ../../../docs_src/body_fields/tutorial001.py!} |
|||
``` |
|||
|
|||
=== "Python 3.10 и выше" |
|||
|
|||
```Python hl_lines="2" |
|||
{!> ../../../docs_src/body_fields/tutorial001_py310.py!} |
|||
``` |
|||
|
|||
!!! warning "Внимание" |
|||
Обратите внимание, что функция `Field` импортируется непосредственно из `pydantic`, а не из `fastapi`, как все остальные функции (`Query`, `Path`, `Body` и т.д.). |
|||
|
|||
## Объявление атрибутов модели |
|||
|
|||
Вы можете использовать функцию `Field` с атрибутами модели: |
|||
|
|||
=== "Python 3.6 и выше" |
|||
|
|||
```Python hl_lines="11-14" |
|||
{!> ../../../docs_src/body_fields/tutorial001.py!} |
|||
``` |
|||
|
|||
=== "Python 3.10 и выше" |
|||
|
|||
```Python hl_lines="9-12" |
|||
{!> ../../../docs_src/body_fields/tutorial001_py310.py!} |
|||
``` |
|||
|
|||
Функция `Field` работает так же, как `Query`, `Path` и `Body`, у ее такие же параметры и т.д. |
|||
|
|||
!!! note "Технические детали" |
|||
На самом деле, `Query`, `Path` и другие функции, которые вы увидите в дальнейшем, создают объекты подклассов общего класса `Param`, который сам по себе является подклассом `FieldInfo` из Pydantic. |
|||
|
|||
И `Field` (из Pydantic), и `Body`, оба возвращают объекты подкласса `FieldInfo`. |
|||
|
|||
У класса `Body` есть и другие подклассы, с которыми вы ознакомитесь позже. |
|||
|
|||
Помните, что когда вы импортируете `Query`, `Path` и другое из `fastapi`, это фактически функции, которые возвращают специальные классы. |
|||
|
|||
!!! tip "Подсказка" |
|||
Обратите внимание, что каждый атрибут модели с типом, значением по умолчанию и `Field` имеет ту же структуру, что и параметр *функции обработки пути* с `Field` вместо `Path`, `Query` и `Body`. |
|||
|
|||
## Добавление дополнительной информации |
|||
|
|||
Вы можете объявлять дополнительную информацию в `Field`, `Query`, `Body` и т.п. Она будет включена в сгенерированную JSON схему. |
|||
|
|||
Вы узнаете больше о добавлении дополнительной информации позже в документации, когда будете изучать, как задавать примеры принимаемых данных. |
|||
|
|||
|
|||
!!! warning "Внимание" |
|||
Дополнительные ключи, переданные в функцию `Field`, также будут присутствовать в сгенерированной OpenAPI схеме вашего приложения. |
|||
Поскольку эти ключи не являются обязательной частью спецификации OpenAPI, некоторые инструменты OpenAPI, например, [валидатор OpenAPI](https://validator.swagger.io/), могут не работать с вашей сгенерированной схемой. |
|||
|
|||
## Резюме |
|||
|
|||
Вы можете использовать функцию `Field` из Pydantic, чтобы задавать дополнительную валидацию и метаданные для атрибутов модели. |
|||
|
|||
Вы также можете использовать дополнительные ключевые аргументы, чтобы добавить метаданные JSON схемы. |
Loading…
Reference in new issue