🔌projets

Creer une API REST avec Flask en Python

30 mars 2026 5 min de lecture

Pourquoi créer une API REST avec Flask en NSI ?

Tu te demandes peut-être à quoi sert une API dans la vraie vie ? Imagine une application météo sur ton téléphone. Elle ne contient pas toutes les données météo du monde, elle les demande à un serveur via une API (Application Programming Interface). En NSI, créer une API avec Flask est un projet formidable pour comprendre le web moderne, consolider tes compétences en Python et réaliser quelque chose de concret. C'est exactement le type de projet qui impressionne dans un portfolio pour Parcoursup ou une future école d'informatique.

Une API REST (Representational State Transfer) suit des principes simples : elle utilise les verbes HTTP (GET, POST, PUT, DELETE) pour manipuler des ressources (comme des articles, des utilisateurs, des produits) généralement au format JSON. Avec Flask, un micro-framework Python léger et puissant, tu vas pouvoir mettre en œuvre ces concepts en quelques lignes de code.

Mise en place de ton environnement de développement

Avant de coder, il faut préparer ton terrain de jeu. On va utiliser un environnement virtuel, une bonne pratique en Python pour isoler les dépendances de ton projet.

Étape 1 : Installation de Flask

Ouvre ton terminal (ou l'invite de commandes sur Windows) et suis ces instructions :

  • Crée un dossier pour ton projet : mkdir mon_api_flask puis cd mon_api_flask.
  • Crée un environnement virtuel : python -m venv venv (ou python3 sur Mac/Linux).
  • Active-le :
    • Sur Windows : venv\Scripts\activate
    • Sur Mac/Linux : source venv/bin/activate
  • Installe Flask : pip install flask

Tu peux maintenant créer un fichier app.py à la racine de ton dossier. C'est ici que toute la magie va opérer.

Les fondations : Ta première route et la gestion des données

Commençons simple. Une API a besoin de données à servir. Pour ce tutoriel, on va simuler une petite base de données en mémoire : une liste de livres.

Définir les données et la route GET

Dans app.py, écris ce code :

from flask import Flask, jsonify, request
app = Flask(__name__)

# Notre "base de données" simulée
livres = [
{'id': 1, 'titre': 'Le Petit Prince', 'auteur': 'Antoine de Saint-Exupéry'},
{'id': 2, 'titre': '1984', 'auteur': 'George Orwell'}
]

@app.route('/livres', methods=['GET'])
def get_livres():
return jsonify(livres)

if __name__ == '__main__':
app.run(debug=True)

Exécute ton script avec python app.py. Ouvre ton navigateur et va sur http://127.0.0.1:5000/livres. Bravo ! Tu viens de créer ton premier endpoint d'API. La fonction jsonify() de Flask transforme ta liste Python en JSON, le langage universel des APIs.

Implémenter les autres verbes HTTP (POST, PUT, DELETE)

Une API REST complète permet de créer, lire, mettre à jour et supprimer des ressources (CRUD).

POST : Ajouter un nouveau livre

Ajoute cette route pour créer un livre. On utilise request.get_json() pour récupérer les données envoyées par le client (comme un formulaire, mais en JSON).

@app.route('/livres', methods=['POST'])
def add_livre():
nouveau_livre = request.get_json()
# On lui attribue un ID simple
nouveau_livre['id'] = max(livre['id'] for livre in livres) + 1
livres.append(nouveau_livre)
return jsonify(nouveau_livre), 201 # Code 201 pour "Created"

Pour tester cette route, tu auras besoin d'un outil comme Postman ou Insomnia, ou tu peux utiliser la ligne de commande avec curl. C'est l'occasion de découvrir ces outils indispensables aux développeurs d'API !

GET par ID, PUT et DELETE

Voici comment compléter ton API pour gérer un livre spécifique :

# GET un livre par son ID
@app.route('/livres/<int:livre_id>', methods=['GET'])
def get_livre(livre_id):
livre = next((l for l in livres if l['id'] == livre_id), None)
if livre is None:
return jsonify({'erreur': 'Livre non trouvé'}), 404
return jsonify(livre)

# PUT pour mettre à jour un livre
@app.route('/livres/<int:livre_id>', methods=['PUT'])
def update_livre(livre_id):
livre = next((l for l in livres if l['id'] == livre_id), None)
if livre is None:
return jsonify({'erreur': 'Livre non trouvé'}), 404
donnees = request.get_json()
livre.update(donnees)
return jsonify(livre)

# DELETE pour supprimer un livre
@app.route('/livres/<int:livre_id>', methods=['DELETE'])
def delete_livre(livre_id):
global livres
livres = [l for l in livres if l['id'] != livre_id]
return '', 204 # Code 204 pour "No Content" (succès mais pas de réponse)

Astuce NSI : La syntaxe <int:livre_id> dans la route est un convertisseur de Flask. Il capture une partie de l'URL et la convertit directement en entier pour ta fonction.

Prochaines étapes et bonnes pratiques

Félicitations, ton API fonctionne ! Pour aller plus loin et en faire un projet solide, voici quelques pistes :

  • Utiliser une vraie base de données : Remplace la liste livres par SQLite (avec le module sqlite3 intégré à Python) ou une librairie comme SQLAlchemy.
  • Structurer ton projet : Pour des APIs plus grosses, sépare les routes, les modèles de données et la logique dans différents fichiers (routes.py, models.py).
  • Gérer les erreurs proprement : Utilise le décorateur @app.errorhandler(404) pour renvoyer de jolis messages d'erreur en JSON.
  • Sécuriser ton API : Explore des extensions Flask comme Flask-JWT-Extended pour ajouter une authentification par tokens (un concept avancé mais très important).

N'oublie pas de documenter ton API ! Tu peux noter sur un README.md les endpoints disponibles, leurs méthodes et les formats de données attendus. C'est une compétence professionnelle très valorisée.

📚 Pour aller plus loin

Questions fréquentes

Flask, c'est difficile pour un débutant en NSI ?

Pas du tout ! Flask est réputé pour sa simplicité et sa courbe d'apprentissage douce. Contrairement à des frameworks plus imposants, il te permet de comprendre les concepts de base (routes, requêtes, réponses) avec très peu de code. C'est un excellent choix pour un premier projet web en Python.

J'ai une erreur 'ModuleNotFoundError: No module named flask'. Que faire ?

Cela signifie que Flask n'est pas installé dans l'environnement Python que tu utilises. Vérifie bien que ton environnement virtuel est activé (tu devrais voir '(venv)' au début de ta ligne de commande). Si c'est le cas, ré-exécute `pip install flask`. Si le problème persiste, assure-toi d'utiliser `pip` et `python` qui correspondent à la même installation (Python 3.6 ou supérieur est requis).

Comment tester mon API si je n'ai pas Postman ?

Tu as plusieurs options : 1) Utilise `curl` dans ton terminal (ex: `curl -X GET http://127.0.0.1:5000/livres`). 2) Écris un petit script Python avec la librairie `requests` (ex: `import requests; reponse = requests.get('http://127.0.0.1:5000/livres')`). 3) Utilise l'extension Thunder Client dans VS Code. 4) Certains navigateurs ont des extensions similaires à Postman. Postman reste cependant l'outil le plus complet pour cela.

Mon API marche en local, comment la mettre en ligne ?

Pour la rendre accessible sur internet, tu dois la déployer sur un service d'hébergement (ou "cloud"). Plusieurs options gratuites ou peu coûteuses existent pour des projets NSI : Render, PythonAnywhere, ou Heroku (avec une configuration adaptée). Ces plateformes te guident pour connecter ton dépôt Git (GitHub, GitLab) et déployer ton application Flask. Pense à désactiver le mode `debug=True` en production !

Quelle est la différence entre Flask et Django ?

Flask est un <em>micro-framework</em> : il fournit le strict minimum (routage, templates, serveur de dev), et tu ajoutes les extensions dont tu as besoin (base de données, authentification...). Django est un <em>framework full-stack</em> : il inclut "tout en un" (ORM, admin, authentification, templating). Flask offre plus de flexibilité et est idéal pour apprendre les bases ou créer des APIs légères. Django est plus adapté pour des applications web complexes et structurées. Pour un projet NSI, Flask est souvent recommandé en premier.

Bravo ! Tu as lu cet article
Inscris-toi pour sauvegarder ta progression et gagner des XP
Creer mon compte
Flask APIPython web projet
Pixel