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

from fastapi import FastAPI, status

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éeCatégorieCodes de statut courantsSignification
1xxInformation--rarement utilisés directement
2xxsuccès200 OKRequête réussie (code de statut par défaut)
201 CreatedRessource créée avec succès
204 No ContentSuccès mais aucun contenu renvoyé
3xxRedirect304 Not ModifiedRessource non modifiée (cache valide)
4xxErreur client400 Bad RequestErreur de format de requête
401 Unauthorizednon authentifié
403 ForbiddenAuthentifié mais sans permission
404 Not FoundRessource introuvable
5xxErreur serveur500 Internal Server ErrorErreur 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

from fastapi import FastAPI, status

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

ConstantesValeurCas d'utilisation
status.HTTP_200_OK200Requête GET réussie (par défaut)
status.HTTP_201_CREATED201Ressource créée avec succès via POST
status.HTTP_204_NO_CONTENT204DELETE réussi, aucun contenu renvoyé
status.HTTP_400_BAD_REQUEST400Erreur de paramètre de requête
status.HTTP_401_UNAUTHORIZED401Non connecté ou jeton invalide
status.HTTP_403_FORBIDDEN403Aucune autorisation d'accès
status.HTTP_404_NOT_FOUND404Ressource introuvable
status.HTTP_409_CONFLICT409Conflit de ressource (par ex., création en double)
status.HTTP_422_UNPROCESSABLE_ENTITY422Échec de la validation des données
status.HTTP_500_INTERNAL_SERVER_ERROR500Erreur interne du serveur

Résumé

  • utilisation de décorateursstatus_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
autres extensions