fastapi/docs/uk/docs/tutorial/header-params.md

4.9 KiB
Raw Blame History

Параметри заголовків

Ви можете визначати параметри заголовків так само, як визначаєте параметри Query, Path і Cookie.

Імпорт Header

Спочатку імпортуйте Header:

{* ../../docs_src/header_params/tutorial001_an_py310.py hl[3] *}

Оголошення параметрів Header

Потім оголосіть параметри заголовків, використовуючи ту ж структуру, що й для Path, Query та Cookie.

Ви можете визначити значення за замовчуванням, а також усі додаткові параметри валідації або анотації:

{* ../../docs_src/header_params/tutorial001_an_py310.py hl[9] *}

/// note | Технічні деталі

Header є «сестринським» класом для Path, Query і Cookie. Він також успадковується від того ж спільного класу Param.

Але пам’ятайте, що коли ви імпортуєте Query, Path, Header та інші з fastapi, то насправді це функції, які повертають спеціальні класи.

///

/// info | Інформація

Щоб оголосити заголовки, потрібно використовувати Header, інакше параметри будуть інтерпретуватися як параметри запиту.

///

Автоматичне перетворення

Header має трохи додаткової функціональності порівняно з тим, що надають Path, Query та Cookie.

Більшість стандартних заголовків розділяються символом «дефіс», також відомим як «символ мінуса» (-).

Але змінна, така як user-agent, є недійсною в Python.

Тому, за замовчуванням, Header перетворюватиме символи підкреслення (_) у назвах параметрів на дефіси (-), щоб отримувати та документувати заголовки.

Також заголовки HTTP не чутливі до регістру, тож ви можете оголошувати їх у стандартному стилі Python (також відомому як «snake_case»).

Тому ви можете використовувати user_agent, як зазвичай у коді Python, замість того щоб потрібно було писати з великої літери перші літери, як User_Agent або щось подібне.

Якщо з якоїсь причини вам потрібно вимкнути автоматичне перетворення підкреслень на дефіси, встановіть параметр convert_underscores у Header в False:

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

/// warning | Попередження

Перед тим як встановити convert_underscores в False, пам’ятайте, що деякі HTTP-проксі та сервери забороняють використання заголовків із підкресленнями.

///

Дубльовані заголовки

Можливо отримати дубльовані заголовки. Тобто один і той самий заголовок із кількома значеннями.

Ви можете визначити такі випадки, використовуючи список у типізації.

Ви отримаєте всі значення дубльованого заголовка у вигляді Python-list.

Наприклад, щоб оголосити заголовок X-Token, який може з’являтися більше ніж один раз, ви можете написати:

{* ../../docs_src/header_params/tutorial003_an_py310.py hl[9] *}

Якщо ви взаємодієте з цією операцією шляху, надсилаючи два HTTP-заголовки, наприклад:

X-Token: foo
X-Token: bar

Відповідь буде така:

{
    "X-Token values": [
        "bar",
        "foo"
    ]
}

Підсумок

Оголошуйте заголовки за допомогою Header, використовуючи той самий загальний підхід, що й для Query, Path та Cookie.

І не хвилюйтеся про підкреслення у ваших змінних — FastAPI подбає про їх перетворення.