Gestion des réponses (Fast API)

Dans FastAPI, une réponse correspond à ce que votre API renvoie au client après avoir traité une requête.
Cela peut être du texte, du JSON, un fichier, ou même un code HTTP spécifique. Chaque endpoint définit comment la réponse est générée.


Comment ça fonctionne ?

FastAPI utilise les annotations de type Python et des objets spéciaux pour générer automatiquement des réponses correctes et documentées.
Lorsque le client envoie une requête :

  1. FastAPI appelle l’endpoint correspondant.

  2. L’endpoint traite la requête et retourne des données.

  3. FastAPI convertit ces données en réponse HTTP appropriée, souvent en JSON.


Exemple conceptuel

Ici, l’endpoint /users renvoie automatiquement un JSON bien formé.


Types de réponses dans FastAPI


Pourquoi c’est important


Bonnes pratiques


En résumé

Fonctions :

  • Gestion des réponses avec Fast API (exemple)

    Exemple de code :

    from fastapi import FastAPI, Response, status
    from fastapi.responses import JSONResponse, PlainTextResponse
    
    app = FastAPI()
    
    # 1️⃣ Réponse JSON automatique
    @app.get("/json/")
    def get_json():
        return {"message": "Ceci est une réponse JSON"}
    
    # 2️⃣ Réponse texte simple
    @app.get("/text/")
    def get_text():
        return PlainTextResponse("Ceci est une réponse texte simple")
    
    # 3️⃣ Réponse avec code HTTP personnalisé
    @app.get("/custom_status/")
    def custom_status():
        return Response(content="Tout va bien mais attention !", status_code=status.HTTP_202_ACCEPTED)
    
    # 4️⃣ Réponse JSON avec en-têtes personnalisés
    @app.get("/headers/")
    def custom_headers():
        content = {"message": "Réponse avec en-têtes personnalisés"}
        headers = {"X-Custom-Header": "ValeurPersonnalisée"}
        return JSONResponse(content=content, headers=headers)

    Explication du code :

    from fastapi import FastAPI, Response, status importe FastAPI pour créer l’application, Response pour personnaliser les réponses et status pour utiliser des codes HTTP prédéfinis.

    from fastapi.responses import JSONResponse, PlainTextResponse importe des classes pour retourner des réponses spécifiques : JSON ou texte brut.

    app = FastAPI() crée une instance de l’application FastAPI.

    Réponse JSON automatique

    @app.get("/json/") définit une route GET.
    return {"message": "Ceci est une réponse JSON"} renvoie automatiquement un objet JSON avec le message.

    Réponse texte simple

    @app.get("/text/") définit une route GET.
    return PlainTextResponse("Ceci est une réponse texte simple") renvoie une réponse en texte brut plutôt qu’en JSON.

    Réponse avec code HTTP personnalisé

    @app.get("/custom_status/") définit une route GET.
    return Response(content="Tout va bien mais attention !", status_code=status.HTTP_202_ACCEPTED) renvoie une réponse avec un contenu texte et un code HTTP 202 (Accepted) au lieu du 200 par défaut.

    Réponse JSON avec en-têtes personnalisés

    @app.get("/headers/") définit une route GET.
    content = {"message": "Réponse avec en-têtes personnalisés"} prépare le contenu JSON.
    headers = {"X-Custom-Header": "ValeurPersonnalisée"} définit un en-tête HTTP personnalisé.
    return JSONResponse(content=content, headers=headers) renvoie la réponse JSON avec l’en-tête ajouté.