Skip to main content

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

  1. Créez un projet vide.
  2. Basez-vous sur la démo vue en cours.
  3. 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

  1. Partir de la démo existante.
  2. Renommer le projet proprement.
  3. Initialiser un dépôt Git.
  4. Changer la base de données.
  5. Récupérer uniquement la logique métier du projet ApiArticle (service Article).
  6. Implémenter les fonctions manquantes dans la DAO.
  7. Tester l'API.
  8. Tester avec le front Angular.
  9. Finaliser et nettoyer le code.