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
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
| Geltungsbereich | Kategorie | Häufige Statuscodes | Bedeutung |
|---|---|---|---|
| 1xx | Information | -- | selten direkt verwendet |
| 2xx | Erfolg | 200 OK | Anfrage erfolgreich (Standardstatuscode) |
201 Created | Ressource erfolgreich erstellt | ||
204 No Content | Erfolgreich, aber kein Inhalt zurückgegeben | ||
| 3xx | Redirect | 304 Not Modified | Ressource nicht geändert (Cache gültig) |
| 4xx | Client-Fehler | 400 Bad Request | Fehler im Anfrageformat |
401 Unauthorized | nicht authentifiziert | ||
403 Forbidden | Authentifiziert, aber keine Berechtigung | ||
404 Not Found | Ressource nicht gefunden | ||
| 5xx | Serverfehler | 500 Internal Server Error | Interner Serverfehler |
Verwendung von Statuskonstanten
fastapi.statusstellt Konstanten für alle HTTP-Statuscodes bereit, was die Verwendung mit Editor-Autovervollständigung bequemer macht:
Beispiel
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
| Konstanten | Wert | Anwendungsfall |
|---|---|---|
status.HTTP_200_OK | 200 | GET-Anfrage erfolgreich (Standard) |
status.HTTP_201_CREATED | 201 | POST-Ressource erfolgreich erstellt |
status.HTTP_204_NO_CONTENT | 204 | DELETE erfolgreich, kein Inhalt zurückgegeben |
status.HTTP_400_BAD_REQUEST | 400 | Anfrageparameter-Fehler |
status.HTTP_401_UNAUTHORIZED | 401 | Nicht angemeldet oder Token ungültig |
status.HTTP_403_FORBIDDEN | 403 | Keine Berechtigung für den Zugriff |
status.HTTP_404_NOT_FOUND | 404 | Ressource nicht gefunden |
status.HTTP_409_CONFLICT | 409 | Ressourcenkonflikt (z. B. doppelte Erstellung) |
status.HTTP_422_UNPROCESSABLE_ENTITY | 422 | Datenvalidierung fehlgeschlagen |
status.HTTP_500_INTERNAL_SERVER_ERROR | 500 | Interner Serverfehler |
Zusammenfassung
- Verwendung von Dekoratoren
status_codeStandard-Statuscode als Parameter deklarieren - Empfohlen
fastapi.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