|
| 1 | +# Cookies de Resposta |
| 2 | + |
| 3 | +## Usando um parâmetro `Response` |
| 4 | + |
| 5 | +Você pode declarar um parâmetro do tipo `Response` na sua *função de operação de rota*. |
| 6 | + |
| 7 | +E então você pode definir cookies nesse objeto de resposta *temporário*. |
| 8 | + |
| 9 | +```Python hl_lines="1 8-9" |
| 10 | +{!../../docs_src/response_cookies/tutorial002.py!} |
| 11 | +``` |
| 12 | + |
| 13 | +Em seguida, você pode retornar qualquer objeto que precise, como normalmente faria (um `dict`, um modelo de banco de dados, etc). |
| 14 | + |
| 15 | +E se você declarou um `response_model`, ele ainda será usado para filtrar e converter o objeto que você retornou. |
| 16 | + |
| 17 | +**FastAPI** usará essa resposta *temporária* para extrair os cookies (também os cabeçalhos e código de status) e os colocará na resposta final que contém o valor que você retornou, filtrado por qualquer `response_model`. |
| 18 | + |
| 19 | +Você também pode declarar o parâmetro `Response` em dependências e definir cookies (e cabeçalhos) nelas. |
| 20 | + |
| 21 | +## Retornando uma `Response` diretamente |
| 22 | + |
| 23 | +Você também pode criar cookies ao retornar uma `Response` diretamente no seu código. |
| 24 | + |
| 25 | +Para fazer isso, você pode criar uma resposta como descrito em [Retornando uma Resposta Diretamente](response-directly.md){.internal-link target=_blank}. |
| 26 | + |
| 27 | +Então, defina os cookies nela e a retorne: |
| 28 | + |
| 29 | +```Python hl_lines="10-12" |
| 30 | +{!../../docs_src/response_cookies/tutorial001.py!} |
| 31 | +``` |
| 32 | + |
| 33 | +/// tip | Dica |
| 34 | + |
| 35 | +Lembre-se de que se você retornar uma resposta diretamente em vez de usar o parâmetro `Response`, FastAPI a retornará diretamente. |
| 36 | + |
| 37 | +Portanto, você terá que garantir que seus dados sejam do tipo correto. E.g. será compatível com JSON se você estiver retornando um `JSONResponse`. |
| 38 | + |
| 39 | +E também que você não esteja enviando nenhum dado que deveria ter sido filtrado por um `response_model`. |
| 40 | + |
| 41 | +/// |
| 42 | + |
| 43 | +### Mais informações |
| 44 | + |
| 45 | +/// note | "Detalhes Técnicos" |
| 46 | + |
| 47 | +Você também poderia usar `from starlette.responses import Response` ou `from starlette.responses import JSONResponse`. |
| 48 | + |
| 49 | +**FastAPI** fornece as mesmas `starlette.responses` em `fastapi.responses` apenas como uma conveniência para você, o desenvolvedor. Mas a maioria das respostas disponíveis vem diretamente do Starlette. |
| 50 | + |
| 51 | +E como o `Response` pode ser usado frequentemente para definir cabeçalhos e cookies, o **FastAPI** também o fornece em `fastapi.Response`. |
| 52 | + |
| 53 | +/// |
| 54 | + |
| 55 | +Para ver todos os parâmetros e opções disponíveis, verifique a <a href="https://www.starlette.io/responses/#set-cookie" class="external-link" target="_blank">documentação no Starlette</a>. |
0 commit comments