Node.js - 3.6 Envoyer une réponse HTML
Un serveur Node.js doit renvoyer une réponse à chaque demande. Cette leçon montre comment définir un en-tête, écrire du HTML dans la réponse, puis terminer la réponse. Elle explique aussi comment vérifier le résultat dans les outils de développement du navigateur.
Définir un en-tête de réponse
La méthode setHeader ajoute un en-tête à la réponse. Le premier argument est le nom de l'en-tête, et le second sa valeur.
L'en-tête Content-Type indique au navigateur le type de contenu de la réponse. Avec la valeur text/html, le navigateur sait qu'il reçoit du HTML.
response.setHeader('Content-Type', 'text/html');
Écrire le HTML puis terminer la réponse
La méthode write ajoute du contenu à la réponse. Plusieurs appels à write s'ajoutent les uns aux autres, dans l'ordre.
La méthode end indique que la réponse est terminée. Après end, il n'est plus possible d'écrire dans la réponse, sinon une erreur apparaît.
response.setHeader('Content-Type', 'text/html');
response.write('<html><head><title>Ma première page</title></head>');
response.write('<body><h1>Bonjour depuis mon serveur Node.js</h1></body></html>');
response.end();
Vérifier la réponse dans les outils de développement
Dans l'onglet réseau des outils de développement du navigateur, la première demande affiche ses en-têtes. Le type de contenu défini apparaît dans les en-têtes de réponse.
L'aperçu de la réponse affiche le code HTML envoyé par le serveur. Après chaque modification du fichier, il faut arrêter le serveur puis le relancer.
En résumé
setHeader définit les en-têtes de la réponse, write ajoute le contenu, et end termine la réponse. Le navigateur affiche le HTML reçu. Les outils de développement permettent de vérifier les en-têtes et le contenu. Express, vu plus tard, simplifie ces étapes.
Points clés
- setHeader définit un en-tête de réponse.
- L'en-tête Content-Type indique le type de contenu, ici du HTML.
- write ajoute du contenu à la réponse.
- end termine la réponse, et rien ne peut plus être ajouté ensuite.
- Les outils de développement du navigateur permettent de vérifier la réponse.
Questions fréquentes
Pourquoi écrire la réponse en plusieurs morceaux ?
La méthode write peut être appelée plusieurs fois. Le contenu est alors envoyé morceau par morceau, dans l'ordre.
Que se passe-t-il si on écrit après end ?
Une erreur apparaît, car la réponse a déjà été envoyée au client.
Faut-il définir tous les en-têtes à la main ?
Non. Un package, présenté plus tard, gère une partie de ces en-têtes à votre place.