FastAPI-Antwortstatuscodes

HTTP-Statuscodes sind Teil der Antwort und werden verwendet, um den Client über das Ergebnis der Anfrageverarbeitung zu informieren. FastAPI ermöglicht es Ihnen, im Pfadoperations-Dekorator einen Standard-Statuscode zu deklarieren und ihn auch innerhalb der Funktion dynamisch zu ändern.


Statuscode deklarieren

Nutzungstatus_codeDer Parameter deklariert den Antwort-Statuscode im Dekorator:

Beispiel

from fastapi import FastAPI, status

app = FastAPI()


# Verwende den Statuscode 201 beim Erstellen einer Ressource
@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):
    return {"name": name}

status_codeist ein Parameter der Dekorator-Methode (z. B.,@app.post()), kein Parameter der Pfadoperation-Funktion. Es kann eine Zahl sein (wie201), kann auchfastapi.statusKonstanten in (empfohlen, mit Editor-Autovervollständigung).


HTTP-Statuscode-Schnellreferenz

GeltungsbereichKategorieHäufige StatuscodesBedeutung
1xxInformation--selten direkt verwendet
2xxErfolg200 OKAnfrage erfolgreich (Standardstatuscode)
201 CreatedRessource erfolgreich erstellt
204 No ContentErfolgreich, aber kein Inhalt zurückgegeben
3xxRedirect304 Not ModifiedRessource nicht geändert (Cache gültig)
4xxClient-Fehler400 Bad RequestFehler im Anfrageformat
401 Unauthorizednicht authentifiziert
403 ForbiddenAuthentifiziert, aber keine Berechtigung
404 Not FoundRessource nicht gefunden
5xxServerfehler500 Internal Server ErrorInterner Serverfehler

Verwendung von Statuskonstanten

fastapi.statusstellt Konstanten für alle HTTP-Statuscodes bereit, was die Verwendung mit Editor-Autovervollständigung bequemer macht:

Beispiel

from fastapi import FastAPI, status

app = FastAPI()


# POST - Ressource erstellen, gibt 201 zurück
@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):
    return {"name": name}


# DELETE - Ressource löschen, gibt 204 zurück (kein Inhalt)
@app.delete("/items/{item_id}", status_code=status.HTTP_204_NO_CONTENT)
async def delete_item(item_id: int):
    # Löschvorgänge geben normalerweise keinen Inhalt zurück
    pass


# GET - Ressource abrufen, gibt 200 zurück (Standard)
@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

204 No Contentzeigt Erfolg an, gibt aber keinen Inhalt zurück, geeignet für Löschvorgänge. Beachten Sie, dass eine 204-Antwort keinen Antwortkörper enthalten darf.


Übliche Statuscode-Konstanten

KonstantenWertAnwendungsfall
status.HTTP_200_OK200GET-Anfrage erfolgreich (Standard)
status.HTTP_201_CREATED201POST-Ressource erfolgreich erstellt
status.HTTP_204_NO_CONTENT204DELETE erfolgreich, kein Inhalt zurückgegeben
status.HTTP_400_BAD_REQUEST400Anfrageparameter-Fehler
status.HTTP_401_UNAUTHORIZED401Nicht angemeldet oder Token ungültig
status.HTTP_403_FORBIDDEN403Keine Berechtigung für den Zugriff
status.HTTP_404_NOT_FOUND404Ressource nicht gefunden
status.HTTP_409_CONFLICT409Ressourcenkonflikt (z. B. doppelte Erstellung)
status.HTTP_422_UNPROCESSABLE_ENTITY422Datenvalidierung fehlgeschlagen
status.HTTP_500_INTERNAL_SERVER_ERROR500Interner Serverfehler

Zusammenfassung

  • Verwendung von Dekoratorenstatus_codeStandard-Statuscode als Parameter deklarieren
  • Empfohlenfastapi.statusKonstanten, mit Unterstützung für Autovervollständigung im Editor
  • POST verwendet 201 zum Erstellen von Ressourcen, DELETE verwendet 204 zum Löschen von Ressourcen, GET verwendet 200 zum Abrufen von Ressourcen.
  • 4xx kennzeichnet Client-Fehler, 5xx kennzeichnet Server-Fehler
Weitere Erweiterungen