Cookies de réponse¶
🌐 Traduction par IA et humains
Cette traduction a été réalisée par une IA guidée par des humains. 🤝
Elle peut contenir des erreurs d'interprétation du sens original, ou paraître peu naturelle, etc. 🤖
Vous pouvez améliorer cette traduction en nous aidant à mieux guider le LLM d'IA.
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.
from fastapi import FastAPI, Response
app = FastAPI()
@app.post("/cookie-and-object/")
def create_cookie(response: Response):
response.set_cookie(key="fakesession", value="fake-cookie-session-value")
return {"message": "Come to the dark side, we have cookies"}
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 :
from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.post("/cookie/")
def create_cookie():
content = {"message": "Come to the dark side, we have cookies"}
response = JSONResponse(content=content)
response.set_cookie(key="fakesession", value="fake-cookie-session-value")
return response
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¶
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.