Écrivez un serveur HTTP qui servira le même fichier texte pour toute requête reçue.
Votre serveur devrait écouter sur un port dont le numéro vous sera fourni en premier argument de ligne de commande.
Vous recevrez en deuxième argument de ligne de commande le chemin complet du
fichier que vous devrez servir. Vous devez utiliser la méthode
fs.createReadStream()
pour streamer le contenu du fichier dans la réponse.
Parce que nous avons besoin d’un serveur HTTP pour cet exercice, et non d’un
serveur TCP générique, nous utiliserons le module noyau http
. Tout comme le
module net
, http
fournit une méthode http.createServer()
, mais celle-ci
crée un serveur qui comprend le protocole HTTP.
http.createServer()
prend une fonction de rappel appelée une fois par
connexion reçue par la serveur. La fonction de rappel a la signature :
function callback(request, response) { /* ... */ }
Les deux arguments sont des objets représentant la requête HTTP et la
réponse correspondant à cette requête. request
est utilisée pour récupérer
des propriétés, telles que les en-têtes et la query string de la requête,
tandis que response
sert à renvoyer des données au client, tant les en-têtes
que le corps de contenu.
request
et response
sont toutes les deux des flux Node ! Ce qui signifie
que vous pouvez utiliser les mécanismes de flux pour envoyer ou recevoir des
données, lorsque cela vous arrange.
http.createServer()
renvoie une instance de votre serveur, et vous devrez
appeler server.listen(portNumber)
pour commencer à écouter sur un port
particulier.
Un serveur HTTP Node ressemble classiquement à ceci :
var http = require('http');
var server = http.createServer(function(req, res) {
// logique de traitement de la requête…
});
server.listen(8000);
La documentation du module http
peut être consultée hors-ligne à l’adresse
suivante :
Le module noyau fs
fournit des APIs orientées flux pour les fichiers. Vous
aurez besoin d’utiliser la méthode fs.createReadStream()
pour créer un flux
représentant le fichier dont le chemin vous aura été fourni en ligne de
commande. Cette méthode renvoie un objet flux sur lequel vous pouvez appeler
src.pipe(dest)
pour connecter les données lues sur le flux src
à une
écriture sur le flux dst
. De cette façon, vous pouvez connecter un flux issu
du système de fichier à votre flux de réponse HTTP.