fastapi/docs/uk/docs/tutorial/cookie-param-models.md

4.7 KiB
Raw Blame History

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

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

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

/// note | Примітка

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

///

/// tip | Порада

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

///

Cookie з Pydantic-моделлю

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

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

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

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

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

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

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

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

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

///

Заборона додаткових cookie

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

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

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

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

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

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

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

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

Підсумок

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