Gestion des données entrantes (Flask)
Dans Flask, les données entrantes sont toutes les informations que le client envoie à votre application via une requête HTTP.
Ces données peuvent provenir de plusieurs sources : formulaire HTML, URL, paramètres de requête, fichiers, ou JSON dans le corps de la requête.
-
Données = informations envoyées par le client
-
Endpoint = fonction Python qui reçoit et traite ces données
Comment ça fonctionne ?
Flask fournit un objet request
qui contient toutes les données envoyées par le client.
Lorsque le client fait une requête, Flask remplit l’objet request
et le rend accessible à l’endpoint correspondant.
L’endpoint peut ensuite lire ces données et les utiliser pour traiter la requête.
Sources principales des données entrantes :
-
Paramètres d’URL
-
Exemple :
/users?id=42
→request.args
contient{'id': '42'}
-
-
Formulaires HTML
-
Données envoyées via POST ou PUT avec
Content-Type: application/x-www-form-urlencoded
oumultipart/form-data
-
Accès via
request.form
-
-
JSON dans le corps de la requête
-
Très utilisé pour les APIs REST
-
Accès via
request.get_json()
-
-
Fichiers envoyés par le client
-
Accès via
request.files
-
-
Cookies et headers HTTP
-
request.cookies
etrequest.headers
-
Exemple conceptuel
-
URL : /users
-
Méthode HTTP : POST
-
Données envoyées : JSON
{ "name": "Alice", "email": "alice@example.com" }
-
Endpoint : récupère les données, crée un nouvel utilisateur dans la base de données
-
Réponse : code HTTP 201 + JSON
{ "success": true, "id": 42 }
Pourquoi c’est important :
-
Permet à l’application de recevoir et traiter les informations envoyées par le client
-
Facilite la création de fonctionnalités dynamiques (création, modification, suppression de données)
-
Base des interactions entre le client et le serveur
Bonnes pratiques pour la gestion des données entrantes
-
Validation des données
-
Vérifier que les champs nécessaires sont présents et corrects
-
Utiliser des bibliothèques comme
wtforms
oupydantic
pour la validation
-
-
Sanitisation des données
-
Nettoyer les entrées pour éviter les injections SQL, XSS ou autres attaques
-
-
Gestion des erreurs
-
Renvoyer des messages clairs et des codes HTTP adaptés en cas de données invalides (400 Bad Request, 422 Unprocessable Entity…)
-
-
Limiter la taille des fichiers
-
Pour éviter les attaques ou surcharge serveur
-
-
Documentation
-
Décrire les paramètres attendus et leur format pour faciliter l’utilisation de l’API
-
En résumé, dans Flask :
-
Données entrantes = informations envoyées par le client via URL, formulaire, JSON, fichiers…
-
Endpoint = fonction Python qui reçoit et traite ces données
-
request
= objet central pour accéder aux données -
Validation, sanitisation et gestion des erreurs = fondamentaux pour une application sécurisée et robuste
Fonctions :
-
Gestion des données entrantes dans Flask (exemple)
Importation :
from flask import Flask, request, jsonify
Exemple de code :
from flask import Flask, request, jsonify app = Flask(__name__) # 1️⃣ Récupérer des données via les paramètres GET (dans l'URL) @app.route("/search") def search(): query = request.args.get("q") # exemple : /search?q=flask return f"Vous avez recherché : {query}" if query else "Aucune recherche effectuée." # 2️⃣ Récupérer des données via un formulaire POST @app.route("/login", methods=["GET", "POST"]) def login(): if request.method == "POST": username = request.form.get("username") password = request.form.get("password") return f"Connexion de {username} avec le mot de passe {password}" # Si GET → afficher un formulaire simple return ''' <form method="POST"> Nom d'utilisateur: <input type="text" name="username"><br> Mot de passe: <input type="password" name="password"><br> <input type="submit" value="Se connecter"> </form> ''' # 3️⃣ Récupérer des données JSON (API REST) @app.route("/api/data", methods=["POST"]) def api_data(): data = request.get_json() if not data: return jsonify({"error": "Aucune donnée reçue"}), 400 return jsonify({ "message": "Données reçues avec succès", "données": data }) if __name__ == "__main__": app.run(debug=True)
Explication du code :
from flask import Flask, request, jsonify
importe la classe Flask pour créer l’application web, l’objetrequest
pour accéder aux données envoyées par l’utilisateur (formulaires, paramètres, JSON), etjsonify
pour renvoyer facilement des réponses au format JSON.app = Flask(__name__)
crée une instance de l’application Flask, associée au module courant (__name__
), ce qui permet à Flask de trouver les ressources liées à cette application.1️⃣ Récupérer des données dans l’URL (méthode GET)
@app.route("/search")
définit une route accessible à /search.
La fonctionsearch()
utiliserequest.args.get("q")
pour lire le paramètre q dans l’URL (exemple :/search?q=flask
).
La fonction retourne un message différent selon que l’utilisateur a fourni une valeur ou non.2️⃣ Récupérer des données via un formulaire (méthode POST)
@app.route("/login", methods=["GET", "POST"])
définit une route qui accepte à la fois les requêtes GET et POST.
- Si la méthode est POST,request.form.get("username")
etrequest.form.get("password")
récupèrent les valeurs envoyées par le formulaire.
- Si la méthode est GET, la fonction retourne un petit formulaire HTML que l’utilisateur peut remplir et soumettre.3️⃣ Récupérer des données JSON (API REST)
@app.route("/api/data", methods=["POST"])
définit une route qui accepte uniquement des requêtes POST.
La fonction utiliserequest.get_json()
pour récupérer les données JSON envoyées dans la requête.
- Si aucune donnée n’est envoyée, elle retourne une erreur avec un code HTTP 400.
- Sinon, elle renvoie une réponse au format JSON grâce àjsonify()
, confirmant la réception des données.Lancer l’application Flask
if __name__ == "__main__":
vérifie que le fichier est exécuté directement (et non importé comme module dans un autre fichier).
app.run(debug=True)
démarre le serveur Flask en local sur http://127.0.0.1:5000/.
Le paramètredebug=True
active le mode debug, permettant un rechargement automatique du serveur et l’affichage détaillé des erreurs.