Response-Header¶
Einen Response-Parameter verwenden¶
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 Ihrer CORS-Konfiguration hinzufĂŒgen (weitere Informationen finden Sie unter CORS (Cross-Origin Resource Sharing)), unter Verwendung des Parameters expose_headers, dokumentiert in Starlettes CORS-Dokumentation.