Sujet / Cahier des charges — API Articles Express.js avec DAO (Mongoose + Sequelize)
Contexte
Vous devez créer une API backend Node.js + Express.js qui gère des articles en respectant l'abstraction DAO vue en cours.
L'API doit exposer exactement les mêmes URLs et le même format de réponses que le projet Express de référence ApiArticle afin que les étudiants puissent brancher leur ancien front Angular sans modification.
Objectifs pédagogiques
- Mettre en place une architecture “clean” avec séparation des responsabilités :
- Routes → Services → DAO (abstraction)
- Implémenter 2 DAO interchangeables :
DAOArticleMongoose(MongoDB via Mongoose)DAOArticleSequelize(SQL via Sequelize)
- Conserver une interface d'abstraction
IDAOArticle(contrat commun), utilisée par le Service, jamais les implémentations directes. - Permettre de sélectionner la DAO via la configuration aux choix (jspur, ENV, etc.).
Spécification API (URLs identiques au projet de référence)
Base URL (exemple) : http://localhost:3000
Gestion des Articles
Pour les Urls vous pouvez faire les même que ce projet :
https://github.com/Chocolaterie/ApiArticle
Afin de pouvoir connecter votre ancien projet Angular dessus.
Exemple pour GET /articles
- But : récupérer tous les articles.
- Réponse (format imposé) :
{
"code": "200",
"message": "La liste des articles a été récupérée avec succès",
"data": [ /* tableau d'articles */ ]
}
Erreur possible avec le POST
Pour pouvoir envoyer du JSON en POST (comme vu dans un autre module),
il faut autoriser Express à parser le body des requêtes.
Ajoutez par exemple dans app.js :
// Autoriser l'envoi de JSON
app.use(express.json());
Sans cette ligne, req.body sera undefined.
Erreur possible avec CORS
Si vous testez votre front avec votre back, il est possible que les requêtes soient bloquées à cause du CORS.
Dans le cadre du TP, vous pouvez l'autoriser temporairement avec :
// Autoriser le CORS (pour le TP)
app.use(cors());
Cela implique d'installer le package cors dans votre projet :
npm install cors
Conseils
Niveau débutant
- Créez un projet vide.
- Basez-vous sur la démo vue en cours.
- Avancez étape par étape, sans tout faire d'un coup.
Ordre conseillé :
- Configurer
app.js - Créer les routes (commencer par une seule URL)
- Créer le service (ex :
getAll) - Créer une DAO avec une seule méthode (
findAll) - Connecter Routes → Service → DAO
- Tester la première URL
- Prendre du recul (vérifier la structure, la cohérence)
- Commit & push
Ensuite :
- Implémenter progressivement les autres fonctionnalités
- Tester avec votre ancien front Angular
- Corriger si nécessaire
- Finaliser le projet
Niveau à l'aise
- Partir de la démo existante.
- Renommer le projet proprement.
- Initialiser un dépôt Git.
- Changer la base de données.
- Récupérer uniquement la logique métier du projet ApiArticle (service Article).
- Implémenter les fonctions manquantes dans la DAO.
- Tester l'API.
- Tester avec le front Angular.
- Finaliser et nettoyer le code.