TD/TP [Link] + Express.
js
JS/TS en Back-End
M. Mohammed BELATAR
[Link]@[Link]
avec Mme. FZ MOUTAI et M. YF EBOBISSE
3ème Année Ingénierie en Informatique et Réseaux
2 décembre 2024
M. Mohammed BELATAR (EMSI) TD/TP : JavaScript/TypeScript en Back-End 2 décembre 2024 1 / 10
Sommaire
1. Exercices : TypeScript et Back-End
Exercice 1 : Création d’un Serveur Simple avec Express
Exercice 2 : API REST avec [Link]
Exercice 3 : Middleware avec [Link]
Exercice 4 : Connexion à une Base de Données avec MySQL2
Exercice 5 : Gestion des Erreurs
Exercice 6 : CRUD Complet avec MySQL2
Exercice 7 : Authentification Simple
M. Mohammed BELATAR (EMSI) TD/TP : JavaScript/TypeScript en Back-End 2 décembre 2024 2 / 10
Exercice 1 : Création d’un Serveur Simple avec Express
Initialisez un projet TypeScript avec [Link].
Installez les dépendances nécessaires :
Commande
npm install express @types/express ts-node
Configurez un fichier [Link].
Créez un serveur [Link] simple avec une route / qui renvoie :
Exemple
"Bienvenue sur votre serveur [Link] avec TypeScript !"
Extension : Ajoutez une route /status qui retourne un objet JSON avec
l’état du serveur.
M. Mohammed BELATAR (EMSI) TD/TP : JavaScript/TypeScript en Back-End 2 décembre 2024 3 / 10
Exercice 2 : API REST avec [Link]
Implémentez une API REST pour gérer des utilisateurs :
GET /users : Retourne une liste statique d’utilisateurs.
POST /users : Ajoute un utilisateur (stockez les utilisateurs en
mémoire).
GET /users/ :id : Retourne un utilisateur spécifique.
Utilisez TypeScript pour définir des types ou des interfaces.
Extension : Ajoutez des validations pour vérifier que les données POST
incluent un name et un email.
M. Mohammed BELATAR (EMSI) TD/TP : JavaScript/TypeScript en Back-End 2 décembre 2024 4 / 10
Exercice 3 : Middleware avec [Link]
Implémentez un middleware pour logger toutes les requêtes entrantes
avec leur méthode HTTP et leur URL.
Ajoutez un middleware pour valider que chaque requête POST vers
/users inclut un champ name.
Testez ces middlewares avec différentes requêtes.
Extension : Implémentez un middleware qui vérifie la présence d’un header
X-Auth-Token et rejette la requête avec un code 403 si ce n’est pas le cas.
M. Mohammed BELATAR (EMSI) TD/TP : JavaScript/TypeScript en Back-End 2 décembre 2024 5 / 10
Exercice 4 : Connexion à une Base de Données avec
MySQL2
Configurez une base MySQL locale avec une table users :
id (INT, AUTO_INCREMENT, PRIMARY KEY)
name (VARCHAR(50))
email (VARCHAR(100))
Connectez-vous à cette base de données avec mysql2.
Créez une route GET /users pour lister tous les utilisateurs.
Extension : Ajoutez une route POST /users pour insérer un utilisateur
dans la base.
M. Mohammed BELATAR (EMSI) TD/TP : JavaScript/TypeScript en Back-End 2 décembre 2024 6 / 10
Exercice 5 : Gestion des Erreurs
Implémentez une gestion d’erreurs centralisée dans l’API :
Retournez un code 400 pour une requête invalide.
Retournez un code 404 pour une route inexistante.
Ajoutez un middleware global pour gérer toutes les erreurs.
Extension : Ajoutez des logs pour les erreurs dans un fichier externe.
M. Mohammed BELATAR (EMSI) TD/TP : JavaScript/TypeScript en Back-End 2 décembre 2024 7 / 10
Exercice 6 : CRUD Complet avec MySQL2
Implémentez les routes suivantes pour gérer les utilisateurs :
GET /users : Liste tous les utilisateurs.
POST /users : Ajoute un utilisateur.
GET /users/ :id : Retourne un utilisateur spécifique.
PUT /users/ :id : Modifie un utilisateur existant.
DELETE /users/ :id : Supprime un utilisateur.
Validez les données avant de les insérer ou les modifier.
Extension : Implémentez des validations pour vérifier que les champs name
et email sont valides.
M. Mohammed BELATAR (EMSI) TD/TP : JavaScript/TypeScript en Back-End 2 décembre 2024 8 / 10
Exercice 7 : Authentification Simple
Implémentez une route POST /login :
Accepte un email et un password fictif.
Génère un token si les identifiants sont corrects.
Ajoutez un middleware pour vérifier que les requêtes vers /users
incluent un token valide.
Extension : Stockez les utilisateurs dans une base de données et vérifiez
les identifiants à partir de cette table.
M. Mohammed BELATAR (EMSI) TD/TP : JavaScript/TypeScript en Back-End 2 décembre 2024 9 / 10
Résumé des Exercices
Objectifs couverts :
Utilisation de TypeScript en Back-End.
Création d’APIs REST avec [Link].
Connexion à une base MySQL avec mysql2.
Gestion des erreurs et implémentation de middlewares.
M. Mohammed BELATAR (EMSI) TD/TP : JavaScript/TypeScript en Back-End 2 décembre 2024 10 / 10