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.

4.7 KiB

Моделі для Cookie-параметрів

Якщо у Вас є група cookies параметрів, які пов'язані між собою, Ви можете створити Pydantic-модель, щоб оголосити їх. 🍪

Це дозволить Вам повторно використовувати модель у різних місцях, а також оголосити валідацію та метадані для всіх параметрів одночасно. 😎

/// note | Нотатки

Це підтримується з версії FastAPI 0.115.0. 🤓

///

/// tip | Порада

Ця ж техніка застосовується до Query, Cookie, та Header. 😎

///

Оголосіть cookie-параметри, які Вам потрібні, у Pydantic-моделі, а потім оголосіть параметр як Cookie:

{* ../../docs_src/cookie_param_models/tutorial001_an_py310.py hl[9:12,16] *}

FastAPI буде витягувати дані для кожного поля з cookie параметрів, отриманих у запиті, і передавати Вам Pydantic-модель, яку Ви визначили.

Перевірка у документації

Ви можете побачити визначені cookie в інтерфейсі документації за адресою /docs:

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

Майте на увазі, що оскільки браузери обробляють cookie особливим чином і "за лаштунками", вони не дозволяють JavaScript легко з ними працювати.

Якщо Ви зайдете до інтерфейсу документації API за адресою /docs, Ви зможете побачити документацію для cookie у Ваших операціях шляху.

Але навіть якщо Ви заповните дані й натиснете "Execute", оскільки інтерфейс документації працює з JavaScript, cookie не будуть відправлені, і Ви побачите помилку, ніби Ви не ввели жодних значень.

///

У деяких спеціальних випадках (ймовірно, не дуже поширених) Ви можете захотіти обмежити список cookie, які хочете отримувати.

Ваша API тепер має можливість контролювати власну згоду на cookie. 🤪🍪

Ви можете використовувати налаштування моделі Pydantic, щоб заборонити будь-які додаткові поля:

{* ../../docs_src/cookie_param_models/tutorial002_an_py39.py hl[10] *}

Якщо клієнт спробує надіслати якісь додаткові cookie, він отримає відповідь з помилкою.

Бідні банери cookie, які так старанно намагаються отримати Вашу згоду, щоб API її відхилила. 🍪

Наприклад, якщо клієнт спробує надіслати cookie santa_tracker зі значенням good-list-please, він отримає відповідь з помилкою, яка повідомить, що cookie santa_tracker не дозволено:

{
    "detail": [
        {
            "type": "extra_forbidden",
            "loc": ["cookie", "santa_tracker"],
            "msg": "Extra inputs are not permitted",
            "input": "good-list-please",
        }
    ]
}

Підсумок

Ви можете використовувати Pydantic-моделі для оголошення cookie у FastAPI. 😎