En-têtes 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 (comme vous pouvez le faire pour les cookies).
Vous pouvez ensuite définir des en-têtes dans cet objet de réponse temporaire.
from fastapi import FastAPI, Response
app = FastAPI()
@app.get("/headers-and-object/")
def get_headers(response: Response):
response.headers["X-Cat-Dog"] = "alone in the world"
return {"message": "Hello World"}
Ensuite, vous pouvez 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 en-têtes (ainsi que les cookies et le code de statut), 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 en-têtes (et des cookies).
Renvoyer une Response directement¶
Vous pouvez également ajouter des en-têtes lorsque vous renvoyez une Response directement.
Créez une réponse comme décrit dans Renvoyer une Response directement et passez les en-têtes comme paramètre supplémentaire :
from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.get("/headers/")
def get_headers():
content = {"message": "Hello World"}
headers = {"X-Cat-Dog": "alone in the world", "Content-Language": "en-US"}
return JSONResponse(content=content, headers=headers)
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 sous fastapi.responses simplement pour votre commodité, en tant que développeur. Mais la plupart des réponses disponibles viennent directement de Starlette.
Et comme Response peut être utilisée fréquemment pour définir des en-têtes et des cookies, FastAPI la fournit aussi via fastapi.Response.
En-têtes personnalisés¶
Gardez à l'esprit que des en-têtes propriétaires personnalisés peuvent être ajoutés en utilisant le préfixe X-.
Mais si vous avez des en-têtes personnalisés que vous voulez qu'un client dans un navigateur puisse voir, vous devez les ajouter à vos configurations CORS (en savoir plus dans CORS (Cross-Origin Resource Sharing)), en utilisant le paramètre expose_headers documenté dans la documentation CORS de Starlette.