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 req
argument 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 :
Produira ce résultat:
/summer
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.