0% ont trouvé ce document utile (0 vote)
10 vues4 pages

Application TODO avec Express.js et API REST

Le document décrit un TP de développement d'une application TODO utilisant Express.js pour créer une API REST permettant de gérer des tâches. Les tâches sont stockées dans un fichier texte et le TP est structuré en plusieurs parties, incluant l'initialisation du projet, la gestion des tâches, la création de l'API et la persistance des données. Des améliorations possibles et des livrables sont également mentionnés, incluant des fichiers spécifiques et un README.md.

Transféré par

Manal Es
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
10 vues4 pages

Application TODO avec Express.js et API REST

Le document décrit un TP de développement d'une application TODO utilisant Express.js pour créer une API REST permettant de gérer des tâches. Les tâches sont stockées dans un fichier texte et le TP est structuré en plusieurs parties, incluant l'initialisation du projet, la gestion des tâches, la création de l'API et la persistance des données. Des améliorations possibles et des livrables sont également mentionnés, incluant des fichiers spécifiques et un README.md.

Transféré par

Manal Es
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Hassan 1er

École Nationale des Sciences Appliquées Berrechid


Master Universitaire Ingénierie Informatique et BigData

TP 1
Application TODO avec [Link] ([Link] + ES6+)

Pr : F. TOUFIK
Année universitaire : 2025–2026

1
Université Hassan 1er – ENSAB MUP IIBD

2. Sujet du TP : Application TODO avec [Link]


Vous allez développer une petite application de gestion de tâches exposée via une API
REST construite avec [Link]. L’utilisateur (client) pourra ajouter, afficher et terminer
des tâches en appelant des routes HTTP (par exemple avec curl, Postman ou un client
HTTP).
Chaque tâche sera un objet contenant :
— un identifiant unique (id)
— une description (label)
— un statut d’avancement (done)
Les tâches seront persistées dans un fichier texte (par exemple [Link]), avec une
tâche par ligne. Chaque ligne pourra suivre un format simple, par exemple :
— Format texte séparé par des points-virgules : id;label;done
— ou une structure JSON par ligne : {"id":1,"label":"Faire les courses","done":false}

3. Organisation du TP
Le TP est structuré en plusieurs parties progressives.

Partie 1 — Initialisation du projet


— Créez un dossier tp-todo-express.
— Initialisez un projet Node avec npm init -y.
— Ajoutez "type": "module" dans le fichier [Link] pour activer les modules
ES.
— Installez [Link] : npm install express.
— (Optionnel) Installez nodemon pour le rechargement automatique : npm install
–save-dev nodemon.

Partie 2 — Module de gestion des tâches


Créez un fichier [Link] contenant la logique métier :
— un tableau de tâches stockées en mémoire (chargées depuis le fichier texte au dé-
marrage),
— une fonction fléchée pour ajouter une tâche,
— une fonction pour afficher toutes les tâches,
— une fonction pour marquer une tâche comme terminée,
— (optionnel) une fonction pour supprimer une tâche.
Contraintes techniques :
— utiliser les template strings pour l’affichage dans la console (journalisation) ou
les messages,

2
Université Hassan 1er – ENSAB MUP IIBD

— utiliser le spread operator pour ajouter des tâches : création d’un nouveau ta-
bleau à partir de l’ancien,
— utiliser le destructuring lors de la manipulation et de l’affichage des tâches.

Partie 3 — API REST avec [Link]


Créez un fichier [Link] qui démarre un serveur HTTP Express :
— Importer et configurer Express : import express from ’express’;
— Créer une instance d’application : const app = express();
— Ajouter le middleware [Link]([Link]()); pour parser le JSON.
Définissez les routes suivantes (au minimum) :
— GET /tasks : retourne la liste complète des tâches.
— POST /tasks : ajoute une nouvelle tâche. Le corps de la requête contiendra par
exemple : { "label": "Acheter du pain" }.
— PATCH /tasks/ :id/done : marque la tâche d’identifiant id comme terminée.
— GET /tasks/ :id (optionnel) : retourne une tâche par son identifiant.
Contraintes :
— utiliser les fonctionnalités ES6 : rest operator, destructuring, template strings pour
construire les réponses,
— retourner des réponses JSON structurées : { success: true, data: ... },
— gérer les cas d’erreur (tâche introuvable, corps de requête invalide, etc.) avec un
code HTTP adapté (404, 400, ...).

Partie 4 — Sauvegarde des tâches dans un fichier texte


Créez un fichier [Link] pour gérer la persistance dans un fichier texte (par
exemple [Link]) :
— chargement des tâches depuis le fichier au lancement de l’application :
— lire le fichier avec [Link],
— découper le contenu par lignes,
— convertir chaque ligne en objet tâche (id, label, done).
— sauvegarde des tâches après chaque modification :
— réécrire l’ensemble des tâches dans le fichier (une tâche par ligne),
— ou utiliser [Link] pour ajouter les nouvelles lignes, selon la
stratégie choisie.
Contraintes :
— utiliser async/await pour toutes les opérations asynchrones sur les fichiers,
— gérer l’erreur ENOENT lorsque le fichier n’existe pas encore :
— s’il n’existe pas, considérer qu’il n’y a pas encore de tâches,
— le créer lors de la première sauvegarde.

3
Université Hassan 1er – ENSAB MUP IIBD

— garantir que le format reste cohérent : une tâche par ligne, toujours dans le
même format.

5. Améliorations possibles
Pour aller plus loin :
— ajouter une route DELETE /tasks/:id pour supprimer une tâche,
— ajouter une route DELETE /tasks pour supprimer toutes les tâches,
— ajouter une route de recherche GET /tasks/search?query=<mot> pour filtrer les
tâches par mot-clé dans le label,
— ajouter un champ createdAt (date de création) pour chaque tâche, stocké égale-
ment dans le fichier texte,
— ajouter une petite interface HTML (frontend minimal) qui consomme l’API Ex-
press (optionnel),
— colorer les logs serveur dans la console avec le module chalk.

6. Livrables
— Le dossier complet du projet [Link].
— Les fichiers : [Link], [Link], [Link].
— Un fichier [Link] expliquant :
— comment installer les dépendances,
— comment lancer le serveur Express,
— comment tester les différentes routes (exemples de commandes curl).

Vous aimerez peut-être aussi