4.3 KiB
Body - Поля
Таким же способом, как вы объявляете дополнительную валидацию и метаданные в параметрах функции обработки пути с помощью функций Query
, Path
и Body
, вы можете объявлять валидацию и метаданные внутри Pydantic моделей, используя функцию Field
из Pydantic.
Импорт Field
Сначала вы должны импортировать его:
=== "Python 3.10+"
```Python hl_lines="2"
{!> ../../../docs_src/body_fields/tutorial001_py310.py!}
```
=== "Python 3.6+"
```Python hl_lines="4"
{!> ../../../docs_src/body_fields/tutorial001.py!}
```
!!! warning "Внимание"
Обратите внимание, что функция Field
импортируется непосредственно из pydantic
, а не из fastapi
, как все остальные функции (Query
, Path
, Body
и т.д.).
Объявление атрибутов модели
Вы можете использовать функцию Field
с атрибутами модели:
=== "Python 3.10+"
```Python hl_lines="9-12"
{!> ../../../docs_src/body_fields/tutorial001_py310.py!}
```
=== "Python 3.6+"
```Python hl_lines="11-14"
{!> ../../../docs_src/body_fields/tutorial001.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, могут не работать с вашей сгенерированной схемой.
Резюме
Вы можете использовать функцию Field
из Pydantic, чтобы задавать дополнительную валидацию и метаданные для атрибутов модели.
Вы также можете использовать дополнительные ключевые аргументы, чтобы добавить метаданные JSON схемы.