Express : créer un serveur HTTP en Node.js en quelques lignes

Express est un cadre minimal pour écrire un serveur HTTP en Node.js : routes, middlewares, accès à la requête et gestion centralisée des erreurs.
3 min de lecture
Believemy logo

Le module HTTP de Node.js sait écouter sur un port et rien de plus. Lire un corps de requête, distinguer deux URL, renvoyer du JSON : tout est à écrire à la main.

Express apporte exactement ces pièces manquantes, sans en ajouter beaucoup d'autres.


Définition

Express est un cadre minimal pour construire un serveur HTTP en Node.js. Il fournit un routeur, une chaîne de traitements appelés middlewares, et des raccourcis posés sur la requête et la réponse. Le reste, base de données ou authentification, reste à choisir librement.

JAVASCRIPT
import express from "express";

const app = express();
app.use(express.json());

app.get("/factures/:id", (req, res) => {
  const facture = factures.get(req.params.id);
  if (!facture) {
    return res.status(404).json({ erreur: "Introuvable" });
  }
  res.json(facture);
});

app.listen(3000);

Quatorze lignes suffisent à servir une ressource, à traiter le cas absent et à répondre en JSON. Le :id de l'URL devient une propriété de req.params, sans analyse de chaîne à écrire.


Le middleware, la seule idée à comprendre

Un middleware est une fonction qui reçoit la requête, la réponse et la main pour passer au suivant. Ils s'exécutent dans l'ordre de déclaration, ce qui fait de cet ordre une décision de conception à part entière.

JAVASCRIPT
app.use((req, res, next) => {
  console.log(req.method, req.url);
  next();                       // sans cet appel, la requête reste suspendue
});

app.use((err, req, res, next) => {
  console.error(err);
  res.status(500).json({ erreur: "Erreur interne" });
});

Le second exemple se distingue par un détail invisible à la lecture rapide : il prend quatre paramètres. Express s'en sert pour le reconnaître comme gestionnaire d'erreurs, et ne l'appelle que lorsqu'un traitement précédent a échoué.


Ce qu'Express pose sur la requête

PropriétéCe qu'elle contient
req.paramsLes segments variables de l'URL
req.queryLes paramètres écrits après le point d'interrogation
req.bodyLe corps analysé, si un middleware l'a préparé
res.statusLe code de réponse, à enchaîner avant l'envoi
res.jsonLa réponse sérialisée, en-tête compris
Bon à savoir

req.body vaut undefined tant que express.json() n'a pas été déclaré. C'est de loin la surprise la plus fréquente des premières heures avec Express.


Questions fréquentes

Question

Express est-il encore pertinent ?

Il reste le socle le plus répandu de l'écosystème Node, et cette position vaut de l'argent : documentation, réponses, extensions pour à peu près tout. Des concurrents plus récents rendent de meilleures performances ou une validation intégrée, mais aucun n'approche cette masse de ressources.


Question

Comment attraper une erreur asynchrone ?

Une Promise rompue dans une route ne remonte pas toute seule au gestionnaire d'erreurs sur les versions 4. Il faut l'y renvoyer explicitement, avec un try et un appel à next(err), ou en enveloppant la route dans une fonction qui le fait à votre place. La version 5 corrige ce comportement.


Question

Faut-il Express avec Next.js ?

En général non : Next.js sert déjà ses propres routes de données, et ajouter un serveur devant complique le déploiement. Express garde son intérêt quand une API existe déjà, ou quand il faut un traitement que le framework ne couvre pas, comme un flux permanent ou un protocole particulier.

Termes connexes

Découvrez notre glossaire JavaScript

Tous les mots de JavaScript expliqués simplement : mots-clés, objets natifs, méthodes, erreurs et concepts. Définitions claires et exemples qui tournent, pour apprendre et pour se dépanner.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.