Response-Statuscode¶
Genauso wie Sie ein Responsemodell angeben können, können Sie auch den HTTP-Statuscode fĂŒr die Response mit dem Parameter status_code in jeder der Pfadoperationen deklarieren:
@app.get()@app.post()@app.put()@app.delete()- usw.
from fastapi import FastAPI
app = FastAPI()
@app.post("/items/", status_code=201)
async def create_item(name: str):
return {"name": name}
Hinweis
Beachten Sie, dass status_code ein Parameter der âDekoratorâ-Methode ist (get, post, usw.). Nicht der Pfadoperation-Funktion, wie alle anderen Parameter und der Body.
Dem status_code-Parameter wird eine Zahl mit dem HTTP-Statuscode ĂŒbergeben.
Info
Alternativ kann status_code auch ein IntEnum erhalten, wie etwa Pythons http.HTTPStatus.
Dies wird:
- Diesen Statuscode mit der Response zurĂŒcksenden.
- Diesen im OpenAPI-Schema dokumentieren (und somit in den BenutzeroberflÀchen):

Hinweis
Einige Responsecodes (siehe nÀchsten Abschnitt) kennzeichnen, dass die Response keinen Body hat.
FastAPI erkennt dies und erstellt eine OpenAPI-Dokumentation, die zeigt, dass es keinen Responsebody gibt.
Ăber HTTP-Statuscodes¶
Hinweis
Wenn Sie bereits wissen, was HTTP-Statuscodes sind, können Sie diesen Abschnitt ĂŒberspringen und mit dem nĂ€chsten fortfahren.
In HTTP senden Sie einen numerischen Statuscode mit 3 Ziffern als Teil der Response.
Diese Statuscodes haben einen zugeordneten Namen, um sie leichter zu erkennen, aber der wichtige Teil ist die Zahl.
Kurz gefasst:
100 - 199stehen fĂŒr âInformationâ. Sie verwenden diese selten direkt. Responses mit diesen Statuscodes dĂŒrfen keinen Body haben.200 - 299stehen fĂŒr âSuccessfulâ-Responses (âErfolgreichâ). Diese werden Sie am hĂ€ufigsten verwenden.200ist der Default-Statuscode, was bedeutet, alles ist âOKâ.- Ein weiteres Beispiel wĂ€re
201, âCreatedâ (âErzeugtâ). Dieser wird ĂŒblicherweise verwendet, nachdem ein neuer Datensatz in der Datenbank erstellt wurde. - Ein spezieller Fall ist
204, âNo Contentâ (âKein Inhaltâ). Diese Response wird verwendet, wenn es keinen Inhalt gibt, der an den Client zurĂŒckgeschickt werden soll, und diese Response darf daher keinen Body haben.
300 - 399stehen fĂŒr âRedirectionâ (âUmleitungâ). Responses mit diesen Statuscodes können einen Body haben oder nicht, auĂer bei304, âNot Modifiedâ (âNicht verĂ€ndertâ), die keinen haben darf.400 - 499stehen fĂŒr âClient errorâ-Responses (âClient-Fehlerâ). Diese sind die zweithĂ€ufigsten, die Sie vermutlich verwenden werden.- Ein Beispiel ist
404, fĂŒr eine âNot Foundâ-Response (âNicht gefundenâ). - FĂŒr allgemeine Fehler beim Client können Sie einfach
400verwenden.
- Ein Beispiel ist
500 - 599stehen fĂŒr Server-Fehler. Diese verwenden Sie fast nie direkt. Wenn in Ihrem Anwendungscode oder Server etwas schiefgeht, wird automatisch einer dieser Fehler-Statuscodes zurĂŒckgegeben.
Tipp
Um mehr ĂŒber die einzelnen Statuscodes zu erfahren und welcher wofĂŒr verwendet wird, sehen Sie sich die MDN Dokumentation ĂŒber HTTP-Statuscodes an.
AbkĂŒrzung zur Erinnerung an die Namen¶
Lassen Sie uns das vorherige Beispiel noch einmal anschauen:
from fastapi import FastAPI
app = FastAPI()
@app.post("/items/", status_code=201)
async def create_item(name: str):
return {"name": name}
201 ist der Statuscode fĂŒr âCreatedâ (âErzeugtâ).
Aber Sie mĂŒssen sich nicht merken, was jeder dieser Codes bedeutet.
Sie können die Annehmlichkeit von Variablen aus fastapi.status nutzen.
from fastapi import FastAPI, status
app = FastAPI()
@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):
return {"name": name}
Diese sind nur eine Annehmlichkeit, sie enthalten dieselbe Zahl, aber so können Sie die AutovervollstÀndigung Ihres Editors verwenden, um sie zu finden:

Technische Details
Sie könnten auch from starlette import status verwenden.
FastAPI bietet dieselben starlette.status-Codes auch via fastapi.status an, rein zu Ihrer Annehmlichkeit als Entwickler. Aber sie stammen direkt von Starlette.
Den Defaultwert Ă€ndern¶
SpĂ€ter im Handbuch fĂŒr fortgeschrittene Benutzer werden Sie sehen, wie Sie einen anderen Statuscode zurĂŒckgeben können, als den Default, den Sie hier deklarieren.