Response-Header¶
Verwenden Sie einen Response
-Parameter¶
Sie können einen Parameter vom Typ Response
in Ihrer Pfadoperation-Funktion deklarieren (wie Sie es auch für Cookies tun können).
Und dann können Sie Header in diesem vorübergehenden Response-Objekt festlegen.
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"}
Anschließend können Sie wie gewohnt jedes gewünschte Objekt zurückgeben (ein dict
, ein Datenbankmodell, usw.).
Und wenn Sie ein response_model
deklariert haben, wird es weiterhin zum Filtern und Konvertieren des von Ihnen zurückgegebenen Objekts verwendet.
FastAPI verwendet diese vorübergehende Response, um die Header (auch Cookies und Statuscode) zu extrahieren und fügt diese in die endgültige Response ein, die den von Ihnen zurückgegebenen Wert enthält, gefiltert nach einem beliebigen response_model
.
Sie können den Parameter Response
auch in Abhängigkeiten deklarieren und darin Header (und Cookies) festlegen.
Eine Response
direkt zurückgeben¶
Sie können auch Header hinzufügen, wenn Sie eine Response
direkt zurückgeben.
Erstellen Sie eine Response wie in Eine Response direkt zurückgeben beschrieben und übergeben Sie die Header als zusätzlichen Parameter:
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)
Technische Details
Sie können auch from starlette.responses import Response
oder from starlette.responses import JSONResponse
verwenden.
FastAPI bietet dieselben starlette.responses
auch via fastapi.responses
an, als Annehmlichkeit für Sie, den Entwickler. Die meisten verfügbaren Responses kommen aber direkt von Starlette.
Und da die Response
häufig zum Setzen von Headern und Cookies verwendet wird, stellt FastAPI diese auch unter fastapi.Response
bereit.
Benutzerdefinierte Header¶
Beachten Sie, dass benutzerdefinierte proprietäre Header mittels des Präfix 'X-' hinzugefügt werden können.
Wenn Sie jedoch benutzerdefinierte Header haben, die ein Client in einem Browser sehen können soll, müssen Sie diese zu Ihren CORS-Konfigurationen hinzufügen (weitere Informationen finden Sie unter CORS (Cross-Origin Resource Sharing)), unter Verwendung des Parameters expose_headers
, dokumentiert in Starlettes CORS-Dokumentation.