Introduction
Créer une API RESTful avec Python est devenu simple grâce à Flask, un micro-framework léger mais puissant. Que ce soit pour une application mobile, un frontend JavaScript ou un service de données, Flask vous permet de développer rapidement des endpoints pour traiter des requêtes HTTP comme GET, POST, PUT ou DELETE.
Dans cet article, nous allons découvrir comment créer une API REST simple avec Flask, en partant de zéro. Vous apprendrez à configurer Flask, définir des routes, traiter des requêtes, et retourner des réponses JSON. L’objectif est de vous donner les bases pour créer une API rapide, claire, et extensible.
1. Installation de Flask
Pour commencer, installez Flask avec pip :
pip install flask
2. Créer une API REST minimale
Voici un exemple de base :
from flask import Flask
app = Flask(__name__)
@app.route('/')
def accueil():
return "Bienvenue sur mon API !"
if __name__ == '__main__':
app.run(debug=True)
@app.route()
définit une route.debug=True
permet d’actualiser automatiquement lors du développement.
3. Créer une API qui retourne du JSON
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/salut')
def salut():
return jsonify(message="Bonjour, API REST !")
if __name__ == '__main__':
app.run()
4. Ajouter des routes GET, POST, PUT, DELETE
Créer un “mini serveur” qui gère une liste d’utilisateurs
from flask import Flask, jsonify, request
app = Flask(__name__)
utilisateurs = [
{"id": 1, "nom": "Alice"},
{"id": 2, "nom": "Bob"}
]
# Récupérer tous les utilisateurs
@app.route('/api/utilisateurs', methods=['GET'])
def get_utilisateurs():
return jsonify(utilisateurs)
# Récupérer un utilisateur par ID
@app.route('/api/utilisateurs/<int:id>', methods=['GET'])
def get_utilisateur(id):
user = next((u for u in utilisateurs if u["id"] == id), None)
return jsonify(user) if user else ("Non trouvé", 404)
# Ajouter un nouvel utilisateur
@app.route('/api/utilisateurs', methods=['POST'])
def ajouter_utilisateur():
data = request.json
nouvel_id = max(u["id"] for u in utilisateurs) + 1
nouveau = {"id": nouvel_id, "nom": data["nom"]}
utilisateurs.append(nouveau)
return jsonify(nouveau), 201
# Modifier un utilisateur existant
@app.route('/api/utilisateurs/<int:id>', methods=['PUT'])
def modifier_utilisateur(id):
data = request.json
for u in utilisateurs:
if u["id"] == id:
u["nom"] = data["nom"]
return jsonify(u)
return ("Non trouvé", 404)
# Supprimer un utilisateur
@app.route('/api/utilisateurs/<int:id>', methods=['DELETE'])
def supprimer_utilisateur(id):
global utilisateurs
utilisateurs = [u for u in utilisateurs if u["id"] != id]
return '', 204
if __name__ == '__main__':
app.run(debug=True)
5. Tester l’API avec curl ou Postman
GET
curl http://localhost:5000/api/utilisateurs
POST
curl -X POST -H "Content-Type: application/json" -d '{"nom":"Charlie"}' http://localhost:5000/api/utilisateurs
6. Bonus : structurer le code dans un vrai projet
À mesure que votre API grandit, il est recommandé de structurer votre code en :
- app.py (point d’entrée)
- routes/ (fichiers de routes)
- models/ (données et logique métier)
- config.py
Conclusion
Flask est une excellente porte d’entrée pour créer des APIs REST en Python. Grâce à sa syntaxe claire et sa grande flexibilité, vous pouvez rapidement mettre en place des endpoints pour répondre à tous types de besoins : prototypage, test, backend d’application mobile, etc. Avec cette base, vous êtes maintenant prêt à construire une API complète et évolutive.