Module HTTP Node.js


Le module HTTP intégré

Node.js possède un module intégré appelé HTTP, qui permet à Node.js de transférer des données via le protocole HTTP (Hyper Text Transfer Protocol).

Pour inclure le module HTTP, utilisez la require()méthode :

var http = require('http');

Node.js en tant que serveur Web

Le module HTTP peut créer un serveur HTTP qui écoute les ports du serveur et renvoie une réponse au client.

Utilisez la createServer()méthode pour créer un serveur HTTP :

Exemple

var http = require('http');

//create a server object:
http.createServer(function (req, res) {
  res.write('Hello World!'); //write a response to the client
  res.end(); //end the response
}).listen(8080); //the server object listens on port 8080

La fonction passée dans la http.createServer() méthode sera exécutée lorsque quelqu'un tentera d'accéder à l'ordinateur sur le port 8080.

Enregistrez le code ci-dessus dans un fichier appelé "demo_http.js", et lancez le fichier :

Lancez demo_http.js :

C:\Users\Your Name>node demo_http.js

Si vous avez suivi les mêmes étapes sur votre ordinateur, vous verrez le même résultat que l'exemple : http://localhost:8080



Ajouter un en-tête HTTP

Si la réponse du serveur HTTP est censée être affichée au format HTML, vous devez inclure un en-tête HTTP avec le type de contenu correct :

Exemple

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('Hello World!');
  res.end();
}).listen(8080);

Le premier argument de la res.writeHead()méthode est le code d'état, 200 signifie que tout est OK, le deuxième argument est un objet contenant les en-têtes de réponse.


Lire la chaîne de requête

La fonction passée à http.createServer() a un reqargument qui représente la demande du client, sous la forme d'un objet (objet http.IncomingMessage).

Cet objet a une propriété appelée "url" qui contient la partie de l'url qui vient après le nom de domaine :

demo_http_url.js

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write(req.url);
  res.end();
}).listen(8080);

Enregistrez le code ci-dessus dans un fichier appelé "demo_http_url.js" et lancez le fichier :

Lancez demo_http_url.js :

C:\Users\Your Name>node demo_http_url.js

Si vous avez suivi les mêmes étapes sur votre ordinateur, vous devriez voir deux résultats différents lors de l'ouverture de ces deux adresses :

http://localhost:8080/été

Produira ce résultat:

/summer

http://localhost:8080/hiver

Produira ce résultat:

/winter

Fractionner la chaîne de requête

Il existe des modules intégrés pour diviser facilement la chaîne de requête en parties lisibles, comme le module URL.

Exemple

Divisez la chaîne de requête en parties lisibles :

var http = require('http');
var url = require('url');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  var q = url.parse(req.url, true).query;
  var txt = q.year + " " + q.month;
  res.end(txt);
}).listen(8080);

Enregistrez le code ci-dessus dans un fichier appelé "demo_querystring.js" et lancez le fichier :

Lancez demo_querystring.js :

C:\Users\Your Name>node demo_querystring.js

L'adresse:

Produira ce résultat:

2017 July

En savoir plus sur le module URL dans le chapitre Module URL Node.js.