Published

Body - Поля

FastAPI framework, high performance, easy to learn, fast to code, ready for production We just scratched the surface, but you already get the idea of how it all works...

Body - Поля

Таким же способом, как вы объявляете дополнительную валидацию и метаданные в параметрах функции обработки пути с помощью функций Query, Path и Body, вы можете объявлять валидацию и метаданные внутри Pydantic моделей, используя функцию Field из Pydantic.

Импорт Field

Сначала вы должны импортировать его:

=== "Python 3.10+"

{!> ../../../docs_src/body_fields/tutorial001_py310.py!}

=== "Python 3.6+"

{!> ../../../docs_src/body_fields/tutorial001.py!}

!!! warning "Внимание" Обратите внимание, что функция Field импортируется непосредственно из pydantic, а не из fastapi, как все остальные функции (Query, Path, Body и т.д.).

Объявление атрибутов модели

Вы можете использовать функцию Field с атрибутами модели:

=== "Python 3.10+"

{!> ../../../docs_src/body_fields/tutorial001_py310.py!}

=== "Python 3.6+"

{!> ../../../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 схемы.