2.5 KiB
Cookies de réponse
Utiliser un paramètre Response
Vous pouvez déclarer un paramètre de type Response dans votre fonction de chemin d'accès.
Vous pouvez ensuite définir des cookies dans cet objet de réponse temporaire.
{* ../../docs_src/response_cookies/tutorial002_py310.py hl[1, 8:9] *}
Vous pouvez ensuite renvoyer n'importe quel objet dont vous avez besoin, comme d'habitude (un dict, un modèle de base de données, etc.).
Et si vous avez déclaré un response_model, il sera toujours utilisé pour filtrer et convertir l'objet que vous avez renvoyé.
FastAPI utilisera cette réponse temporaire pour extraire les cookies (ainsi que les en-têtes et le code d'état), et les placera dans la réponse finale qui contient la valeur que vous avez renvoyée, filtrée par tout response_model.
Vous pouvez également déclarer le paramètre Response dans des dépendances, et y définir des cookies (et des en-têtes).
Renvoyer une Response directement
Vous pouvez également créer des cookies en renvoyant une Response directement dans votre code.
Pour ce faire, vous pouvez créer une réponse comme décrit dans Renvoyer une Response directement.
Définissez ensuite des cookies dessus, puis renvoyez-la :
{* ../../docs_src/response_cookies/tutorial001_py310.py hl[10:12] *}
/// tip | Astuce
Gardez à l'esprit que si vous renvoyez une réponse directement au lieu d'utiliser le paramètre Response, FastAPI la renverra telle quelle.
Vous devez donc vous assurer que vos données sont du type correct. Par exemple, qu'elles sont compatibles avec JSON si vous renvoyez une JSONResponse.
Et également que vous n'envoyez pas de données qui auraient dû être filtrées par un response_model.
///
En savoir plus
/// note | Détails techniques
Vous pouvez également utiliser from starlette.responses import Response ou from starlette.responses import JSONResponse.
FastAPI fournit les mêmes starlette.responses que fastapi.responses simplement pour votre commodité, en tant que développeur. Mais la plupart des réponses disponibles proviennent directement de Starlette.
Et comme Response peut être utilisé fréquemment pour définir des en-têtes et des cookies, FastAPI la met également à disposition via fastapi.Response.
///
Pour voir tous les paramètres et options disponibles, consultez la documentation de Starlette.