DocsGestionnaires et erreurs
Validation et erreurs
Comment un gestionnaire d'API signale une mauvaise requête.
Validation
Les paramètres du gestionnaire sont validés par FastAPI par rapport à leurs annotations.
from nexy.http import Header async def GET(q: str, limit: int = 10, x_token: str = Header(...)): return {"q": q, "limit": limit}| Problème | Statut | Corps |
|---|---|---|
| requête, en-tête, cookie ou champ de corps manquant ou invalide | 422 |
{"detail": [{"loc": [...], "msg": "...", "type": "..."}]} |
segment chemin non valide (/api/users/abc pour id: int) |
404 |
la page introuvable, ou JSON pour Accept: application/json |
Un segment de chemin qui ne peut pas être converti est un 404 plutôt qu'un 422 : une route dynamique capture n'importe quelle URL et une URL qui ne peut pas être convertie n'existe pas.
Le corps de 422 est la forme standard de FastAPI, donc les clients existants et les SDK générés continuent de fonctionner.
Générer des erreurs
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| Le client envoie | Réponse |
|---|---|
Accept: application/json |
{"detail": "No such item"} avec le statut 404 |
Accept: text/html |
la page d'erreur |
Accept: */* |
la page d'erreur |
Définissez Accept: application/json dans les clients API. Les navigateurs continuent de recevoir des pages.
Exceptions non gérées
Une exception selon laquelle votre gestionnaire n'attrape pas les réponses 500, avec le même choix HTML ou JSON.
Réponses personnalisées
Renvoyez un objet de réponse lorsque vous contrôlez le corps :
from nexy.http import JSONResponse async def POST(): return JSONResponse({"error": "conflict"}, status_code=409)