Merci de prendre part à cet atelier pratique ! Vous allez découvrir comment construire une API REST en utilisant Node.js et Express. Cet atelier pose les bases pour développer des services API plus complexes et adaptés à des projets réels.
Une API REST (Representational State Transfer) est une interface qui permet aux applications de communiquer entre elles de manière flexible et évolutive, en séparant clairement le frontend du backend.
Imaginez un restaurant : l'API est comme le serveur qui prend votre commande. Vous (le client/frontend) ne pouvez pas entrer directement dans la cuisine (la base de données/backend), mais vous communiquez vos besoins au serveur en utilisant un "langage" standard (les méthodes HTTP). Le serveur transmet votre demande à la cuisine, puis vous rapporte ce que vous avez commandé (les données JSON).
- GET : Comme demander le menu ou un plat spécifique
- POST : Comme passer une nouvelle commande
- PUT : Comme modifier une commande déjà passée
- DELETE : Comme annuler une commande
Cette séparation claire des rôles rend le système plus organisé et permet à différents "clients" (applications web, mobiles, etc.) de communiquer avec le même "restaurant" (backend) sans connaître ses secrets de cuisine.
Votre mission est de créer une API REST fonctionnelle pour notre site web MonPremierLab. Vous devrez :
- Comprendre les principes de l'architecture REST et ses différences avec les applications rendues côté serveur.
- Implémenter des endpoints pour gérer des ressources comme les utilisateurs ou les produits.
- Structurer votre application pour qu'elle puisse évoluer facilement avec de nouvelles fonctionnalités.
À la fin de cet atelier, votre API devra :
-
Gérer au moins deux ressources avec des endpoints pour les opérations CRUD :
- Create (Création) - Ajouter une nouvelle ressource
- Read (Lecture) - Obtenir des informations sur une ressource
- Update (Mise à jour) - Modifier une ressource existante
- Delete (Supprimer) - Supprimer une ressource
-
Respecter les conventions REST : URLs claires et significatives, utilisation appropriée des méthodes HTTP (GET, POST, PUT, DELETE).
-
Être modulaire et prête à accueillir des extensions futures.
-
Répondre correctement aux requêtes testées avec des clients HTTP comme Postman, sans générer d'erreurs.
-
Pour compléter cet atelier, vous devez documenter votre expérience dans un fichier nommé
README-mon-experience.md. Ce fichier est un journal personnel vous permet de réfléchir à ce que vous avez appris, aux défis que vous avez rencontrés, et aux améliorations que vous pourriez envisager.
Pour mener à bien cet atelier, vous disposerez de :
- Code de démarrage : Un projet Node.js préconfiguré avec Express pour démarrer rapidement.
- Documentation : Un guide (voir le fichier README-documentation.md) sur les bases des API REST et les dépendances essentielles (comme
expressetnodemon). - Fichier de configuration : Un
package.jsonprêt à l'emploi pour gérer les dépendances de votre projet.
Voici les étapes pour construire votre API :
-
Créer un fork du projet
- Connectez-vous à GitHub et naviguez vers le dépôt du projet.
- Cliquez sur le bouton "Fork" en haut à droite pour créer une copie du projet dans votre propre compte GitHub.
-
Configurer le code de démarrage
- Clonez votre fork localement avec la commande suivante (remplacez
<url-de-votre-fork>par l'URL de votre fork) :git clone <url-de-votre-fork>
- Installez les dépendances avec :
npm install
- Lancez le serveur avec :
npm run dev
- Explorez la structure initiale du projet.
🔍 Checkpoint : À ce stade, vous devriez voir dans votre terminal le message "Serveur démarré sur http://localhost:3000".
- Clonez votre fork localement avec la commande suivante (remplacez
-
Comprendre l'architecture des API REST
- Étudiez les principes REST (ressources, verbes HTTP) dans la documentation fournie.
- Comparez cette approche aux applications traditionnelles rendues côté serveur.
-
Planifier vos endpoints API
- Commençons par deux ressources simples :
usersetproducts - Pour chaque ressource, nous aurons besoin des endpoints suivants :
Utilisateurs :
GET /users: Récupérer la liste des utilisateursGET /users/:id: Récupérer un utilisateur spécifiquePOST /users: Créer un nouvel utilisateurPUT /users/:id: Mettre à jour un utilisateurDELETE /users/:id: Supprimer un utilisateur
Produits :
GET /products: Récupérer la liste des produitsGET /products/:id: Récupérer un produit spécifiquePOST /products: Créer un nouveau produitPUT /products/:id: Mettre à jour un produitDELETE /products/:id: Supprimer un produit
🔍 Checkpoint : Essayez de dessiner un schéma de vos endpoints avec les méthodes HTTP correspondantes.
- Commençons par deux ressources simples :
-
Commencer par une route simple
- Créez d'abord une seule route GET pour tester votre configuration :
app.get('/test', (req, res) => { res.json({ message: 'API fonctionnelle!' }); });
- Testez cette route dans votre navigateur ou avec Postman.
- Créez d'abord une seule route GET pour tester votre configuration :
-
Implémenter les endpoints GET
- Créez un dossier
routespour organiser vos routes - Ajoutez des fichiers séparés pour
userRoutes.jsetproductRoutes.jsdans le dossiers routes - Implémentez d'abord les routes GET pour les deux ressources
- Utilisez un tableau JavaScript simple comme "base de données" temporaire :
// Exemple de "base de données" temporaire let users = [ { id: 1, name: 'Alice', email: '[email protected]' }, { id: 2, name: 'Bob', email: '[email protected]' } ];
🔍 Checkpoint : Testez vos routes GET avec Postman pour vous assurer qu'elles renvoient les données attendues.
- Créez un dossier
-
Ajouter les routes POST, PUT et DELETE
- Complétez votre API avec les autres méthodes HTTP
- N'oubliez pas d'utiliser
express.json()middleware pour parser le corps des requêtes :app.use(express.json());
🔍 Checkpoint : Testez la création d'un nouvel utilisateur avec POST et vérifiez qu'il apparaît dans la liste des utilisateurs.
-
Structurer l'application pour la croissance
- Créez un dossier
controllerspour séparer la logique de vos routes - Créez un dossier
modelspour définir la structure de vos données - Ajoutez un middleware simple pour logger les requêtes :
app.use((req, res, next) => { console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`); next(); });
- Créez un dossier
-
Tester votre API complète
- Créez une collection Postman pour tester toutes vos routes
- Exemple de test pour la création d'utilisateur :
- Méthode : POST
- URL : http://localhost:3000/users
- Body (JSON) :
{ "name": "Charlie", "email": "[email protected]" }
🔍 Exemple de réponse attendue :
{ "id": 3, "name": "Charlie", "email": "[email protected]" }
-
Problèmes communs et solutions :
- "Cannot find module" : Vérifiez que vous avez bien installé toutes les dépendances avec
npm install - "Address already in use" : Un autre serveur utilise déjà le port 3000. Changez le port dans votre code ou arrêtez l'autre service.
- "Unexpected token in JSON" : Vérifiez la syntaxe de votre JSON dans le corps de la requête.
- "Cannot find module" : Vérifiez que vous avez bien installé toutes les dépendances avec
-
Liens utiles :
Une fois votre API testée localement, vous pourrez la déployer sur une plateforme comme Heroku ou Vercel :
- Configurez des variables d'environnement pour sécuriser les informations sensibles (ex. : clés d'API).
- Testez vos endpoints en ligne pour confirmer leur bon fonctionnement.
Nous serions ravis de connaître votre avis ! Si vous avez des suggestions pour améliorer cet atelier ou si vous avez rencontré des difficultés, n'hésitez pas à les partager avec nous. Vos retours sont essentiels pour enrichir cette expérience d'apprentissage.
Cet atelier est entièrement gratuit. N'hésitez pas à le partager avec toute personne susceptible d'en bénéficier.