Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

16 chapitres5 h 32 minIntermédiaire

Node.js et Express

Cours Node.js et Express gratuit pour le BTS SIO SLAM : npm, API REST, MySQL, Prisma, Zod, JWT, tests, Swagger et Docker, avec exercices corrigés.

Par Josselyn C., prof de BTS SIO. Mis à jour le .

L'essentiel

Node.js est l'environnement qui exécute du JavaScript en dehors du navigateur, sur un serveur ; Express est le framework minimaliste qui sert à y construire des applications web et des API. Avec eux, tu écris le back-end d'une application dans le même langage que son front : l'API qui reçoit les requêtes, vérifie qui les envoie, applique les règles de gestion et lit ou écrit dans la base de données. Au BTS SIO option SLAM, c'est une pile très utilisée pour les réalisations professionnelles présentées à l'E6, et les questions de l'écrit E7 sur les API, les jetons et le contrôle d'accès s'appuient souvent sur du code de ce genre.

À la fin de ce cours, tu sauras :

  • créer un projet Node.js, gérer ses dépendances avec npm et l'organiser en modules ;
  • construire une API REST avec Express 5 : routes, middlewares, gestion des erreurs, codes de statut justes ;
  • relier l'API à MySQL avec des requêtes préparées et des transactions, puis avec l'ORM Prisma ;
  • valider chaque donnée reçue, authentifier les utilisateurs par jeton JWT et contrôler les droits par rôle et par propriétaire ;
  • sécuriser, journaliser, tester et documenter l'API, puis la déployer dans un conteneur Docker derrière Nginx ;
  • lire, corriger et faire évoluer du code Express comme on te le demandera à l'E6 et à l'E7.

Avant ce cours. Tu dois être à l'aise avec le JavaScript du cours JavaScript : fonctions fléchées, objets, tableaux et leurs méthodes (map, filter, reduce), déstructuration, promesses et async/await. Les notions d'API (HTTP, méthodes, codes de statut, conception des routes, JWT, CORS) sont expliquées dans le cours API REST : ce cours les applique et renvoie au chapitre concerné quand il en a besoin. Pour la base de données, les bases du cours SQL suffisent : SELECT, jointures, clés étrangères.

Après ce cours. Le cours React construit le front qui consomme l'API d'AppliFrais écrite ici. Le cours API REST avec Node.js et MongoDB reprend la même démarche avec une base orientée documents. L'organisation du code en couches est approfondie dans le cours Architecture MVC, les tests dans le cours Tests, les conteneurs dans le cours Docker et les pipelines dans le cours Intégration continue.

Le fil rouge. Tout le cours construit une seule application : l'API d'AppliFrais, qui gère les frais des visiteurs médicaux du laboratoire GSB, le contexte de nombreux ateliers de professionnalisation. Chaque mois, un visiteur crée sa fiche de frais, y saisit des frais forfaitisés (étapes, kilomètres, nuitées, repas) et des frais hors forfait, puis la clôture ; un comptable la valide, puis la met en paiement. C'est exactement l'API conçue dans le cours API REST : les routes, les codes de statut et le format des erreurs sont ceux de son tableau des opérations.

Les versions. Le code est écrit pour Node.js 24, une version LTS maintenue jusqu'en avril 2028, avec Express 5, mysql2 3, Prisma 7, Zod 4 et pino 10, et MySQL 8.4 (il fonctionne aussi avec MariaDB). Tout le code JavaScript du cours a été exécuté avec Node.js 24. Node.js 26 est passé en LTS le 28 octobre 2026 : tu peux le choisir, à condition d'utiliser la même version sur ton poste, dans ta CI et en production.

Comment travailler. Tape le code toi-même, chapitre après chapitre : à la fin, tu as une API complète que tu peux présenter comme réalisation. Chaque chapitre tient seul (si tu arrives d'un moteur de recherche, tu peux le lire directement) et se termine par des exercices dont la réponse est masquée : cherche d'abord, ouvre ensuite.

Ton objectifChapitres à travailler en priorité
Découvrir Node.js et Express1 à 5
Construire l'API de ta réalisation pour l'E62 à 9, puis 12 et 13
Relier une base MySQL à une API6 et 7
Sécuriser une API et préparer l'E7 SLAM8 à 11 et 15
Mettre une API en production10, 11 et 14
Réviser la veille de l'épreuve15 et 16

Sommaire

0%

Node.js et Express

0 chapitre sur 16

  1. Chapitre 1 : C'est quoi Node.js ? Définition, installation et premier script17 min
  2. Chapitre 2 : npm, package.json et modules ES (import, export)22 min
  3. Chapitre 3 : Express.js : créer un serveur et des routes21 min
  4. Chapitre 4 : Middleware Express : next(), erreurs async et route 40418 min
  5. Chapitre 5 : Créer une API REST CRUD avec Node.js et Express23 min
  6. Chapitre 6 : Node.js et MySQL avec mysql2 : requêtes préparées et transactions35 min
  7. Chapitre 7 : ORM Prisma avec Node.js et MySQL29 min
  8. Chapitre 8 : Valider les données d'une API avec Zod, et téléverser un fichier21 min
  9. Chapitre 9 : Authentification JWT, argon2 et rôles dans une API Express26 min
  10. Chapitre 10 : CORS et sécurité d'une API Express : helmet, limitation de débit14 min
  11. Chapitre 11 : Logs et erreurs en production avec pino15 min
  12. Chapitre 12 : Tester une API Node.js avec node:test et Supertest23 min
  13. Chapitre 13 : Documenter une API Express avec Swagger (OpenAPI)21 min
  14. Chapitre 14 : Déployer une API Node.js : variables d'environnement, Docker et Nginx20 min
  15. Chapitre 15 : Exercices corrigés Node.js et Express type E6 et E717 min
  16. Chapitre 16 : Aide-mémoire Node.js, npm et Express9 min
Commencer le cours

Questions fréquentes

C'est quoi Node.js et à quoi ça sert ?

Node.js est un environnement d'exécution qui fait tourner du JavaScript en dehors du navigateur, sur un ordinateur ou un serveur, grâce au moteur V8 de Chrome. Il sert surtout à écrire des serveurs web et des API, mais aussi des outils en ligne de commande : Vite, ESLint ou TypeScript tournent sous Node.js. Son modèle asynchrone non bloquant lui permet de servir beaucoup de requêtes à la fois tant qu'elles passent leur temps à attendre la base de données ou le réseau (chapitre 1).

Quelle est la différence entre Node.js et Express ?

JavaScript est le langage, Node.js est l'environnement qui l'exécute côté serveur, et Express est un framework web qui s'installe avec npm dans un projet Node.js. Node.js sait créer un serveur HTTP seul, mais tout est à écrire à la main ; Express apporte le routage (app.get('/v1/fiches/:id', …)), les middlewares et des méthodes pratiques comme res.status(201).json(…). Node.js n'est donc ni un langage ni un framework (Express.js).

C'est quoi un middleware dans Express ?

Un middleware est une fonction (req, res, next) qui s'exécute entre l'arrivée de la requête et la réponse : elle peut lire ou compléter la requête, répondre elle-même, ou passer la main au suivant avec next(). Une application Express est une chaîne de middlewares, exécutés dans l'ordre où ils sont enregistrés : journal, lecture du JSON, authentification, validation, puis la route. Le gestionnaire d'erreurs est un middleware à quatre paramètres, placé en dernier (chapitre 4).

Comment connecter Node.js à une base MySQL ?

On installe le pilote mysql2, on crée un pool de connexions avec mysql.createPool à partir de mysql2/promise, puis on envoie chaque requête avec await pool.execute(sql, valeurs). Les valeurs passent toujours par des marqueurs ? : c'est une requête préparée, qui empêche l'injection SQL. L'API se connecte avec un compte MySQL qui n'a que les droits SELECT, INSERT, UPDATE et DELETE sur sa base (chapitre 6).

Faut-il utiliser un ORM comme Prisma ?

Un ORM fait correspondre les tables à des objets et écrit le SQL à ta place : moins de code répétitif, des requêtes paramétrées par défaut, des migrations versionnées. En échange, il faut apprendre son API, surveiller le SQL qu'il génère et le problème N+1. Les deux approches sont valables pour une réalisation d'E6 si tu sais justifier ton choix ; avec Prisma, installe explicitement la version 7 (prisma@7), car la version 8 est encore en version candidate en novembre 2026 (chapitre 7).

JWT ou session : que choisir pour une API Node.js ?

Pour une API appelée par un front séparé et une application mobile, un jeton JWT court (15 minutes), présenté dans l'en-tête Authorization: Bearer, est la solution la plus simple ; on y ajoute un jeton de rafraîchissement révocable. Pour une application web dont le front et le back sont sur le même domaine, une session avec un cookie HttpOnly, Secure et SameSite est souvent plus sûre et se révoque immédiatement. Dans les deux cas, les mots de passe sont hachés avec argon2 ou bcrypt (chapitre 9).

Bcrypt ou argon2 pour hacher les mots de passe ?

Argon2id est le premier choix recommandé par l'OWASP : il est coûteux en mémoire, ce qui freine les attaques sur carte graphique. Bcrypt reste acceptable, avec un facteur de coût d'au moins 10 (12 est un bon choix aujourd'hui), mais il ne tient compte que des 72 premiers octets du mot de passe. Dans les deux cas, utilise les fonctions asynchrones, et jamais MD5 ni SHA-256 seuls, beaucoup trop rapides (stocker les mots de passe).

Pourquoi ai-je une erreur CORS en appelant mon API depuis React ?

Le front (par exemple http://localhost:5173) et l'API (http://localhost:3000) ont des origines différentes : le navigateur bloque la lecture de la réponse tant que l'API ne l'autorise pas par l'en-tête Access-Control-Allow-Origin. La correction se fait dans l'API, avec app.use(cors({ origin: 'http://localhost:5173' })) placé avant les routes. N'autorise jamais toutes les origines avec les cookies : CORS n'est pas une protection de l'API, mais une permission donnée aux navigateurs (chapitre 10).

Quelle version de Node.js installer en 2026 ?

Toujours une version LTS : Node.js 24 (maintenue jusqu'au 30 avril 2028) ou Node.js 26, passée en LTS le 28 octobre 2026 et maintenue jusqu'au 30 avril 2029. Les versions impaires ne sont jamais LTS. Choisis une version et utilise-la partout : champ engines du package.json, image Docker, pipeline de CI et fiche descriptive de ta réalisation (choisir une version).

Node.js et Express sont-ils au programme du BTS SIO ?

Le référentiel du BTS SIO n'impose aucun langage : il demande de développer des solutions applicatives, des échanges entre applications et des accès aux données, avec un framework. Une API Node.js et Express reliée à MySQL et consommée par un front React est une réalisation professionnelle courante en option SLAM, présentée à l'E6. L'écrit E7 « Cybersécurité des services informatiques » propose des extraits de code à analyser et à sécuriser, dans un langage qui change selon les sujets : les notions de ce cours (requêtes préparées, contrôle d'accès, JWT, journalisation) s'y appliquent directement (exercices type E6 et E7).