Les routes (endpoints Flask)
Dans Flask, une route est l’URL que votre application expose et à laquelle les clients (navigateurs, applications mobiles, ou autres services) peuvent envoyer des requêtes.
Chaque route correspond généralement à une fonction Python qui traite la requête et renvoie une réponse.
-
Route = URL
-
Endpoint = la fonction Python qui gère la route
-
Méthode HTTP = le type de requête que la route accepte (GET, POST, PUT, DELETE…)
Comment ça fonctionne ?
Flask utilise un décorateur @app.route()
pour lier une URL à une fonction.
-
Quand un client envoie une requête à cette URL, Flask appelle la fonction correspondante.
-
La fonction retourne une réponse HTTP, qui peut être du texte, du JSON ou même un rendu HTML.
Exemple conceptuel
-
URL :
/users
-
Fonction Python : récupère la liste des utilisateurs depuis la base de données
-
Méthode HTTP : GET
-
Réponse : JSON contenant la liste des utilisateurs
Ici, l’endpoint /users
est associé à une fonction qui définit la logique pour cette route.
Méthodes HTTP et endpoints
Chaque route peut accepter une ou plusieurs méthodes HTTP :
-
GET : récupérer des données
-
POST : créer une nouvelle ressource
-
PUT / PATCH : mettre à jour une ressource
-
DELETE : supprimer une ressource
Pourquoi c’est important :
-
Permet de structurer l’API de manière RESTful
-
Chaque action a sa propre route ou sa propre méthode sur la même route
-
Facilite la maintenance et la compréhension de l’API
Variables dans les routes
Flask permet de définir des routes dynamiques avec des variables dans l’URL :
-
Exemple conceptuel :
/users/<id>
-
<id>
est une variable capturée par Flask et transmise à la fonction Python -
Cela permet de récupérer, modifier ou supprimer un utilisateur spécifique
Avantage pédagogique :
-
La même fonction peut gérer plusieurs ressources selon la valeur de la variable
-
Les routes restent claires et lisibles pour les développeurs
Retour d’une route
Une fonction associée à une route retourne généralement :
-
Une réponse JSON pour une API
-
Un code HTTP pour indiquer le succès ou l’échec (200, 201, 404…)
-
Optionnellement, des en-têtes pour préciser le type de contenu ou gérer la sécurité
Pourquoi c’est fondamental :
-
Chaque route devient un point de communication clair avec les clients
-
Permet aux applications clientes de comprendre le résultat de la requête
-
Facilite le débogage et le suivi du fonctionnement de l’API
Bonnes pratiques pour les routes Flask
-
Nom clair et RESTful :
/users
pour la collection,/users/<id>
pour un élément précis -
Séparer les méthodes HTTP : éviter de mélanger GET, POST, DELETE dans la même fonction
-
Validation des paramètres : vérifier que les variables passées dans l’URL sont correctes
-
Gestion des erreurs : renvoyer des codes HTTP adaptés et des messages explicites
-
Documentation : décrire chaque endpoint, sa méthode, ses paramètres et sa réponse
En résumé, dans Flask :
-
Une route est l’URL accessible par le client
-
Un endpoint est la fonction Python qui traite la requête
-
Les méthodes HTTP déterminent le type d’action
-
Les variables dans l’URL permettent de rendre les endpoints dynamiques
-
Une réponse claire et structurée (JSON + code HTTP) est essentielle pour une API maintenable
Fonctions :
-
Routes Flask (exemple)
Dans Flask, une route est l’URL que votre application expose et à laquelle les clients (navigateurs, applications mobiles, ou autres services) peuvent envoyer des requêtes. Chaque route correspond généralement à une fonction Python qui traite la requête et renvoie une réponse.
Importation :
from flask import Flask
Exemple de code :
from flask import Flask app = Flask(__name__) # Route principale @app.route('/') def home(): return "Bienvenue sur la page d'accueil !" # Route avec un chemin fixe @app.route('/about') def about(): return "Ceci est la page À propos." # Route avec un paramètre dynamique @app.route('/user/<username>') def show_user(username): return f"Bonjour, {username} !" # Route avec un paramètre numérique @app.route('/post/<int:post_id>') def show_post(post_id): return f"Vous regardez l'article n° {post_id}" if __name__ == "__main__": app.run(debug=True) nify({"message": "Utilisateur supprimé"}), 200 # Lancement de l'application if __name__ == '__main__': app.run(debug=True)
Explication du code :
from flask import Flask
importe la classe Flask depuis la bibliothèqueflask
, qui permet de créer une application web en Python.app = Flask(__name__)
crée une instance de l’application Flask et l’associe au nom spécial__name__
(cela permet à Flask de savoir où chercher les fichiers liés à l’application).Définir une route d’accueil
@app.route('/')
définit une route accessible à l’adresse http://127.0.0.1:5000/.
La fonctionhome()
est exécutée quand on visite cette route.
return "Bienvenue sur la page d'accueil !"
envoie ce texte en réponse au navigateur.Créer une route statique
@app.route('/about')
définit une route fixe accessible à /about.
La fonctionabout()
retourne du texte affiché sur cette page.Route avec paramètre dynamique (chaîne)
@app.route('/user/<username>')
permet de capturer une valeur dans l’URL (exemple : /user/Alice).
Le paramètre capturé (username
) est passé à la fonctionshow_user()
.
return f"Bonjour, {username} !"
affiche une réponse personnalisée selon le nom donné dans l’URL.Route avec paramètre numérique
@app.route('/post/<int:post_id>')
indique que le paramètre doit être un entier (int
).
Exemple : en visitant /post/42,post_id = 42
.
La fonction retourne une chaîne qui inclut ce numéro.Lancer l’application Flask
if __name__ == "__main__":
vérifie que le fichier est exécuté directement (et non importé comme module).
app.run(debug=True)
démarre le serveur local Flask.
L’optiondebug=True
active le mode debug : le serveur se relance automatiquement en cas de modification du code et affiche les erreurs détaillées.