Code d'état de la réponse¶
🌐 Traduction par IA et humains
Cette traduction a été réalisée par une IA guidée par des humains. 🤝
Elle peut contenir des erreurs d'interprétation du sens original, ou paraître peu naturelle, etc. 🤖
Vous pouvez améliorer cette traduction en nous aidant à mieux guider le LLM d'IA.
De la même manière que vous pouvez spécifier un modèle de réponse, vous pouvez également déclarer le code d'état HTTP utilisé pour la réponse avec le paramètre status_code dans n'importe lequel des chemins d'accès :
@app.get()@app.post()@app.put()@app.delete()- etc.
from fastapi import FastAPI
app = FastAPI()
@app.post("/items/", status_code=201)
async def create_item(name: str):
return {"name": name}
Remarque
Remarquez que status_code est un paramètre de la méthode « decorator » (get, post, etc.). Pas de votre fonction de chemin d'accès, comme tous les paramètres et le corps.
Le paramètre status_code reçoit un nombre correspondant au code d'état HTTP.
Info
status_code peut aussi recevoir un IntEnum, comme le http.HTTPStatus de Python.
Il va :
- Renvoyer ce code d'état dans la réponse.
- Le documenter comme tel dans le schéma OpenAPI (et donc dans les interfaces utilisateur) :

Remarque
Certains codes de réponse (voir la section suivante) indiquent que la réponse n'a pas de corps.
FastAPI le sait et produira une documentation OpenAPI indiquant qu'il n'y a pas de corps de réponse.
À propos des codes d'état HTTP¶
Remarque
Si vous savez déjà ce que sont les codes d'état HTTP, passez à la section suivante.
En HTTP, vous envoyez un code d'état numérique de 3 chiffres dans la réponse.
Ces codes d'état ont un nom associé pour les reconnaître, mais la partie importante est le nombre.
En bref :
100 - 199sont pour « Information ». Vous les utilisez rarement directement. Les réponses avec ces codes d'état ne peuvent pas avoir de corps.200 - 299sont pour les réponses de « Succès ». Ce sont celles que vous utiliserez le plus.200est le code d'état par défaut, ce qui signifie que tout était « OK ».- Un autre exemple est
201, « Créé ». Il est couramment utilisé après la création d'un nouvel enregistrement dans la base de données. - Un cas particulier est
204, « Aucun contenu ». Cette réponse est utilisée lorsqu'il n'y a aucun contenu à renvoyer au client ; la réponse ne doit donc pas avoir de corps.
300 - 399sont pour la « Redirection ». Les réponses avec ces codes d'état peuvent avoir ou non un corps, sauf304, « Non modifié », qui ne doit pas en avoir.400 - 499sont pour les réponses d'« Erreur côté client ». C'est probablement le deuxième type que vous utiliserez le plus.- Un exemple est
404, pour une réponse « Non trouvé ». - Pour des erreurs génériques du client, vous pouvez simplement utiliser
400.
- Un exemple est
500 - 599sont pour les erreurs côté serveur. Vous ne les utilisez presque jamais directement. Lorsqu'un problème survient quelque part dans le code de votre application ou sur le serveur, il renverra automatiquement l'un de ces codes d'état.
Astuce
Pour en savoir plus sur chaque code d'état et à quoi il correspond, consultez la MDN documentation about HTTP status codes.
Raccourci pour se souvenir des noms¶
Reprenons l'exemple précédent :
from fastapi import FastAPI
app = FastAPI()
@app.post("/items/", status_code=201)
async def create_item(name: str):
return {"name": name}
201 est le code d'état pour « Créé ».
Mais vous n'avez pas à mémoriser la signification de chacun de ces codes.
Vous pouvez utiliser les variables pratiques de fastapi.status.
from fastapi import FastAPI, status
app = FastAPI()
@app.post("/items/", status_code=status.HTTP_201_CREATED)
async def create_item(name: str):
return {"name": name}
Elles ne sont qu'une commodité, elles contiennent le même nombre, mais de cette façon vous pouvez utiliser l'autocomplétion de l'éditeur pour les trouver :

Détails techniques
Vous pourriez aussi utiliser from starlette import status.
FastAPI fournit le même starlette.status que fastapi.status, uniquement pour votre commodité de développeur. Mais cela vient directement de Starlette.
Modifier la valeur par défaut¶
Plus tard, dans le Guide utilisateur avancé, vous verrez comment renvoyer un code d'état différent de celui par défaut que vous déclarez ici.