Codes de statut de réponse FastAPI
Les codes d'état HTTP font partie de la réponse, utilisés pour informer le client du résultat du traitement de la requête. FastAPI vous permet de déclarer un code d'état par défaut dans le décorateur d'opération de chemin, et aussi de le modifier dynamiquement dans la fonction.
Déclarer le code d'état
Utilisationstatus_codeLe paramètre déclare le code d'état de réponse dans le décorateur :
Exemple
app = FastAPI()
# Utiliser le code d'état 201 lors de la création d'une ressource
@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):
return {"name": name}
status_codeest un paramètre de la méthode du décorateur (par exemple,@app.post()), pas un paramètre de la fonction d'opération de chemin. Il peut être un nombre (tel que201), peut aussi utiliserfastapi.statusconstantes dans (recommandé, avec prise en charge de l'autocomplétion de l'éditeur).
Référence rapide des codes de statut HTTP
| Portée | Catégorie | Codes de statut courants | Signification |
|---|---|---|---|
| 1xx | Information | -- | rarement utilisés directement |
| 2xx | succès | 200 OK | Requête réussie (code de statut par défaut) |
201 Created | Ressource créée avec succès | ||
204 No Content | Succès mais aucun contenu renvoyé | ||
| 3xx | Redirect | 304 Not Modified | Ressource non modifiée (cache valide) |
| 4xx | Erreur client | 400 Bad Request | Erreur de format de requête |
401 Unauthorized | non authentifié | ||
403 Forbidden | Authentifié mais sans permission | ||
404 Not Found | Ressource introuvable | ||
| 5xx | Erreur serveur | 500 Internal Server Error | Erreur interne du serveur |
Utilisation des constantes de statut
fastapi.statusfournit des constantes pour tous les codes de statut HTTP, ce qui les rend plus pratiques à utiliser avec l'auto-complétion de l'éditeur:
Exemple
app = FastAPI()
# POST - Créer une ressource, renvoie 201
@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):
return {"name": name}
# DELETE - supprimer la ressource, renvoie 204 (sans contenu)
@app.delete("/items/{item_id}", status_code=status.HTTP_204_NO_CONTENT)
async def delete_item(item_id: int):
# Les opérations de suppression ne renvoient généralement aucun contenu
pass
# GET - Récupérer une ressource, renvoie 200 (par défaut)
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
204 No Contentindique un succès mais ne renvoie aucun contenu, ce qui convient aux opérations de suppression. Notez qu'une réponse 204 ne peut pas contenir de corps de réponse.
Constantes courantes des codes de statut
| Constantes | Valeur | Cas d'utilisation |
|---|---|---|
status.HTTP_200_OK | 200 | Requête GET réussie (par défaut) |
status.HTTP_201_CREATED | 201 | Ressource créée avec succès via POST |
status.HTTP_204_NO_CONTENT | 204 | DELETE réussi, aucun contenu renvoyé |
status.HTTP_400_BAD_REQUEST | 400 | Erreur de paramètre de requête |
status.HTTP_401_UNAUTHORIZED | 401 | Non connecté ou jeton invalide |
status.HTTP_403_FORBIDDEN | 403 | Aucune autorisation d'accès |
status.HTTP_404_NOT_FOUND | 404 | Ressource introuvable |
status.HTTP_409_CONFLICT | 409 | Conflit de ressource (par ex., création en double) |
status.HTTP_422_UNPROCESSABLE_ENTITY | 422 | Échec de la validation des données |
status.HTTP_500_INTERNAL_SERVER_ERROR | 500 | Erreur interne du serveur |
Résumé
- utilisation de décorateurs
status_codeDéclaration du code d'état par défaut en tant que paramètre - Recommandé
fastapi.statusConstantes, avec prise en charge de l'autocomplétion par l'éditeur - POST utilise 201 pour créer des ressources, DELETE utilise 204 pour supprimer des ressources, GET utilise 200 pour récupérer des ressources.
- 4xx indique des erreurs côté client, 5xx indique des erreurs côté serveur