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.

2.9 KiB

Модели Header-параметров

Если у вас есть группа связанных header-параметров, то вы можете объединить их в одну Pydantic-модель.

Это позволит вам переиспользовать модель в разных местах, а также устанавливать валидаторы и метаданные сразу для всех параметров. 😎

/// note | Заметка

Этот функционал доступен в FastAPI начиная с версии 0.115.0. 🤓

///

Pydantic-модель для Header-параметров

Объявите нужные header-параметры в Pydantic-модели и затем аннотируйте параметр как Header:

{* ../../docs_src/header_param_models/tutorial001_an_py310.py hl[9:14,18] *}

FastAPI извлечёт данные для каждого поля из заголовков запроса и выдаст вам заданную вами Pydantic-модель.

Проверьте сгенерированную документацию

Вы можете посмотреть нужные header-параметры в графическом интерфейсе сгенерированной документации по пути /docs:

Запретить дополнительные заголовки

В некоторых случаях (не особо часто встречающихся) вам может понадобиться ограничить заголовки, которые вы хотите получать.

Вы можете использовать возможности конфигурации Pydantic-модели для того, чтобы запретить (forbid) любые дополнительные (extra) поля:

{* ../../docs_src/header_param_models/tutorial002_an_py310.py hl[10] *}

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

Например, если клиент попытается отправить заголовок tool со значением plumbus, то в ответ он получит ошибку, сообщающую ему, что header-параметр tool не разрешен:

{
    "detail": [
        {
            "type": "extra_forbidden",
            "loc": ["header", "tool"],
            "msg": "Extra inputs are not permitted",
            "input": "plumbus",
        }
    ]
}

Резюме

Вы можете использовать Pydantic-модели для объявления header-параметров в FastAPI. 😎