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. 😎