Sie können einen Parameter vom Typ Response in Ihrer Pfadoperation-Funktion deklarieren (wie Sie es auch für Cookies und Header tun können).
Anschließend können Sie den status_code in diesem vorübergehenden Response-Objekt festlegen.
fromfastapiimportFastAPI,Response,statusapp=FastAPI()tasks={"foo":"Listen to the Bar Fighters"}@app.put("/get-or-create-task/{task_id}",status_code=200)defget_or_create_task(task_id:str,response:Response):iftask_idnotintasks:tasks[task_id]="This didn't exist before"response.status_code=status.HTTP_201_CREATEDreturntasks[task_id]
Und dann können Sie wie gewohnt jedes benötigte 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 den Statuscode (auch Cookies und Header) 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 den Statuscode darin festlegen. Bedenken Sie jedoch, dass der gewinnt, welcher zuletzt gesetzt wird.