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.

3.6 KiB

Cookies в ответе

Использование параметра Response

Вы можете объявить параметр типа Response в вашей функции-обработчике пути.

Затем установить cookies в этом временном объекте ответа.

{* ../../docs_src/response_cookies/tutorial002.py hl[1, 8:9] *}

После этого можно вернуть любой объект, как и раньше (например, dict, объект модели базы данных и так далее).

Если вы указали response_model, он всё равно будет использоваться для фильтрации и преобразования возвращаемого объекта.

FastAPI извлечет cookies (а также HTTP-заголовки и статус-код) из временного ответа и включит их в окончательный ответ, содержащий ваше возвращаемое значение, отфильтрованное через response_model.

Вы также можете объявить параметр типа Response в зависимостях и устанавливать cookies (и HTTP-заголовки) там.

Возвращение Response напрямую

Вы также можете установить Cookies, если возвращаете Response напрямую в вашем коде.

Для этого создайте объект Response, как описано в разделе Возвращение ответа напрямую{.internal-link target=_blank}.

Затем установите cookies и верните этот объект:

{* ../../docs_src/response_cookies/tutorial001.py hl[10:12] *}

/// tip | Совет

Имейте в виду, что если вы возвращаете ответ напрямую, вместо использования параметра Response, FastAPI вернёт его напрямую.

Убедитесь, что ваши данные имеют корректный тип. Например, они должны быть совместимы с JSON, если вы возвращаете JSONResponse.

Также убедитесь, что вы не отправляете данные, которые должны были быть отфильтрованы через response_model.

///

Дополнительная информация

/// note | Технические детали

Вы также можете использовать from starlette.responses import Response или from starlette.responses import JSONResponse.

FastAPI предоставляет fastapi.responses, которые являются теми же объектами, что и starlette.responses, просто для удобства. Однако большинство доступных типов ответов поступает непосредственно из Starlette.

И так как Response часто используется для установки HTTP-заголовков и cookies, FastAPI также предоставляет его как fastapi.Response.

///

Чтобы увидеть все доступные параметры и настройки, ознакомьтесь с документацией Starlette.