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.

7.9 KiB

Конфигурация операций пути

Существует несколько параметров, которые вы можете передать вашему декоратору операций пути для его настройки.

/// warning | "Внимание"

Помните, что эти параметры передаются непосредственно декоратору операций пути, а не вашей функции-обработчику операций пути.

///

Коды состояния

Вы можете определить (HTTP) status_code, который будет использован в ответах вашей операции пути.

Вы можете передать только int-значение кода, например 404.

Но если вы не помните, для чего нужен каждый числовой код, вы можете использовать сокращенные константы в параметре status:

//// tab | Python 3.10+

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

////

//// tab | Python 3.9+

{!> ../../docs_src/path_operation_configuration/tutorial001_py39.py!}

////

//// tab | Python 3.8+

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

////

Этот код состояния будет использован в ответе и будет добавлен в схему OpenAPI.

/// note | "Технические детали"

Вы также можете использовать from starlette import status.

FastAPI предоставляет тот же starlette.status под псевдонимом fastapi.status для удобства разработчика. Но его источник - это непосредственно Starlette.

///

Теги

Вы можете добавлять теги к вашим операциям пути, добавив параметр tags с list заполненным str-значениями (обычно в нём только одна строка):

//// tab | Python 3.10+

{!> ../../docs_src/path_operation_configuration/tutorial002_py310.py!}

////

//// tab | Python 3.9+

{!> ../../docs_src/path_operation_configuration/tutorial002_py39.py!}

////

//// tab | Python 3.8+

{!> ../../docs_src/path_operation_configuration/tutorial002.py!}

////

Они будут добавлены в схему OpenAPI и будут использованы в автоматической документации интерфейса:

Теги с перечислениями

Если у вас большое приложение, вы можете прийти к необходимости добавить несколько тегов, и возможно, вы захотите убедиться в том, что всегда используете один и тот же тег для связанных операций пути.

В этих случаях, имеет смысл хранить теги в классе Enum.

FastAPI поддерживает это так же, как и в случае с обычными строками:

{!../../docs_src/path_operation_configuration/tutorial002b.py!}

Краткое и развёрнутое содержание

Вы можете добавить параметры summary и description:

//// tab | Python 3.10+

{!> ../../docs_src/path_operation_configuration/tutorial003_py310.py!}

////

//// tab | Python 3.9+

{!> ../../docs_src/path_operation_configuration/tutorial003_py39.py!}

////

//// tab | Python 3.8+

{!> ../../docs_src/path_operation_configuration/tutorial003.py!}

////

Описание из строк документации

Так как описания обычно длинные и содержат много строк, вы можете объявить описание операции пути в функции строки документации и FastAPI прочитает её отсюда.

Вы можете использовать Markdown в строке документации, и он будет интерпретирован и отображён корректно (с учетом отступа в строке документации).

//// tab | Python 3.10+

{!> ../../docs_src/path_operation_configuration/tutorial004_py310.py!}

////

//// tab | Python 3.9+

{!> ../../docs_src/path_operation_configuration/tutorial004_py39.py!}

////

//// tab | Python 3.8+

{!> ../../docs_src/path_operation_configuration/tutorial004.py!}

////

Он будет использован в интерактивной документации:

Описание ответа

Вы можете указать описание ответа с помощью параметра response_description:

//// tab | Python 3.10+

{!> ../../docs_src/path_operation_configuration/tutorial005_py310.py!}

////

//// tab | Python 3.9+

{!> ../../docs_src/path_operation_configuration/tutorial005_py39.py!}

////

//// tab | Python 3.8+

{!> ../../docs_src/path_operation_configuration/tutorial005.py!}

////

/// info | "Дополнительная информация"

Помните, что response_description относится конкретно к ответу, а description относится к операции пути в целом.

///

/// check | "Технические детали"

OpenAPI указывает, что каждой операции пути необходимо описание ответа.

Если вдруг вы не укажете его, то FastAPI автоматически сгенерирует это описание с текстом "Successful response".

///

Обозначение операции пути как устаревшей

Если вам необходимо пометить операцию пути как устаревшую, при этом не удаляя её, передайте параметр deprecated:

{!../../docs_src/path_operation_configuration/tutorial006.py!}

Он будет четко помечен как устаревший в интерактивной документации:

Проверьте, как будут выглядеть устаревшие и не устаревшие операции пути:

Резюме

Вы можете легко конфигурировать и добавлять метаданные в ваши операции пути, передавая параметры декораторам операций пути.