Aller au contenu

Réponse - Modifier le code d'état

🌐 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.

Version anglaise

Vous avez probablement déjà lu que vous pouvez définir un Code d'état de la réponse par défaut.

Mais dans certains cas, vous devez renvoyer un code d'état différent de celui par défaut.

Cas d'utilisation

Par exemple, imaginez que vous vouliez renvoyer par défaut un code d'état HTTP « OK » 200.

Mais si les données n'existent pas, vous voulez les créer et renvoyer un code d'état HTTP « CREATED » 201.

Mais vous souhaitez toujours pouvoir filtrer et convertir les données que vous renvoyez avec un response_model.

Pour ces cas, vous pouvez utiliser un paramètre Response.

Utiliser un paramètre Response

Vous pouvez déclarer un paramètre de type Response dans votre fonction de chemin d'accès (comme vous pouvez le faire pour les cookies et les en-têtes).

Vous pouvez ensuite définir le status_code dans cet objet de réponse temporaire.

from fastapi import FastAPI, Response, status

app = FastAPI()

tasks = {"foo": "Listen to the Bar Fighters"}


@app.put("/get-or-create-task/{task_id}", status_code=200)
def get_or_create_task(task_id: str, response: Response):
    if task_id not in tasks:
        tasks[task_id] = "This didn't exist before"
        response.status_code = status.HTTP_201_CREATED
    return tasks[task_id]

Vous pouvez ensuite renvoyer n'importe quel objet nécessaire, comme d'habitude (un dict, un modèle de base de données, etc.).

Et si vous avez déclaré un response_model, il sera toujours utilisé pour filtrer et convertir l'objet que vous avez renvoyé.

FastAPI utilisera cette réponse temporaire pour extraire le code d'état (ainsi que les cookies et les en-têtes), et les placera dans la réponse finale qui contient la valeur que vous avez renvoyée, filtrée par tout response_model.

Vous pouvez également déclarer le paramètre Response dans des dépendances et y définir le code d'état. Mais gardez à l'esprit que la dernière valeur définie prévaut.