committed by
GitHub
1 changed files with 48 additions and 0 deletions
@ -0,0 +1,48 @@ |
|||
|
|||
# Cookies в ответе |
|||
|
|||
## Использование параметра `Response` |
|||
|
|||
Вы можете объявить параметр типа `Response` в вашей функции эндпоинта. |
|||
|
|||
Затем установить cookies в этом временном объекте ответа. |
|||
|
|||
{* ../../docs_src/response_cookies/tutorial002.py hl[1, 8:9] *} |
|||
|
|||
После этого можно вернуть любой объект, как и раньше (например, `dict`, объект модели базы данных и так далее). |
|||
|
|||
Если вы указали `response_model`, он всё равно будет использоваться для фильтрации и преобразования возвращаемого объекта. |
|||
|
|||
**FastAPI** извлечет cookies (а также заголовки и коды состояния) из временного ответа и включит их в окончательный ответ, содержащий ваше возвращаемое значение, отфильтрованное через `response_model`. |
|||
|
|||
Вы также можете объявить параметр типа Response в зависимостях и устанавливать cookies (и заголовки) там. |
|||
|
|||
## Возвращение `Response` напрямую |
|||
|
|||
Вы также можете установить cookies, если возвращаете `Response` напрямую в вашем коде. |
|||
|
|||
Для этого создайте объект `Response`, как описано в разделе [Возвращение ответа напрямую](response-directly.md){.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**. |
|||
|
|||
Для установки заголовков и cookies `Response` используется часто, поэтому **FastAPI** также предоставляет его через `fastapi.responses`. |
|||
/// |
|||
|
|||
Чтобы увидеть все доступные параметры и настройки, ознакомьтесь с <a href="https://www.starlette.io/responses/#set-cookie" class="external-link" target="_blank">документацией Starlette</a>. |
Loading…
Reference in new issue