DokuHandler und Fehler
Validierung und Fehler
Wie ein API-Handler eine fehlerhafte Anfrage meldet.
Validierung
Handler-Parameter werden von FastAPI anhand ihrer Anmerkungen validiert.
from nexy.http import Header async def GET(q: str, limit: int = 10, x_token: str = Header(...)): return {"q": q, "limit": limit}| Problem | Status | Text |
|---|---|---|
| Fehlendes oder ungültiges Abfrage-, Header-, Cookie- oder Textfeld | 422 |
{"detail": [{"loc": [...], "msg": "...", "type": "..."}]} |
ungültiges Pfad-Segment (/api/users/abc für id: int) |
404 |
die nicht gefundene Seite oder JSON für Accept: application/json |
Ein Pfadsegment, das nicht konvertiert werden kann, ist ein 404 und nicht ein 422: Eine dynamische Route erfasst jede URL, und eine URL, die nicht konvertiert werden kann, existiert nicht.
Der 422-Körper hat die Standardform von FastAPI, sodass bestehende Clients und generierte SDKs weiterhin funktionieren.
Fehler melden
from nexy.http import HTTPException async def GET(id: int): item = find(id) if item is None: raise HTTPException(status_code=404, detail="No such item") return item| Client sendet | Antwort |
|---|---|
Accept: application/json |
{"detail": "No such item"} mit Status 404 |
Accept: text/html |
die Fehlerseite |
Accept: */* |
die Fehlerseite |
Legen Sie Accept: application/json in API-Clients fest. Browser rufen ständig Seiten auf.
Nicht behandelte Ausnahmen
Eine Ausnahme besteht darin, dass Ihr Handler keine Antworten 500 mit derselben HTML- oder JSON-Auswahl abfängt.
Benutzerdefinierte Antworten
Geben Sie ein Antwortobjekt zurück, wenn Sie den Text steuern:
from nexy.http import JSONResponse async def POST(): return JSONResponse({"error": "conflict"}, status_code=409)