Modulo HTTP Node.js


Il modulo HTTP integrato

Node.js ha un modulo integrato chiamato HTTP, che consente a Node.js di trasferire dati tramite Hyper Text Transfer Protocol (HTTP).

Per includere il modulo HTTP, utilizzare il require()metodo:

var http = require('http');

Node.js come server Web

Il modulo HTTP può creare un server HTTP che ascolta le porte del server e restituisce una risposta al client.

Usa il createServer()metodo per creare un server HTTP:

Esempio

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 funzione passata nel http.createServer() metodo verrà eseguita quando qualcuno tenterà di accedere al computer sulla porta 8080.

Salva il codice sopra in un file chiamato "demo_http.js" e avvia il file:

Avvia demo_http.js:

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

Se hai seguito gli stessi passaggi sul tuo computer, vedrai lo stesso risultato dell'esempio: http://localhost:8080



Aggiungi un'intestazione HTTP

Se la risposta del server HTTP deve essere visualizzata come HTML, dovresti includere un'intestazione HTTP con il tipo di contenuto corretto:

Esempio

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

Il primo argomento del res.writeHead()metodo è il codice di stato, 200 significa che tutto è OK, il secondo argomento è un oggetto contenente le intestazioni della risposta.


Leggi la stringa di query

La funzione passata in http.createServer() ha un reqargomento che rappresenta la richiesta dal client, come un oggetto (oggetto http.IncomingMessage).

Questo oggetto ha una proprietà chiamata "url" che contiene la parte dell'url che segue il nome di dominio:

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);

Salva il codice sopra in un file chiamato "demo_http_url.js" e avvia il file:

Avvia demo_http_url.js:

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

Se hai seguito gli stessi passaggi sul tuo computer, dovresti vedere due risultati diversi quando apri questi due indirizzi:

http://localhost:8080/estate

Produrrà questo risultato:

/summer

http://localhost:8080/inverno

Produrrà questo risultato:

/winter

Dividi la stringa di query

Ci sono moduli integrati per dividere facilmente la stringa di query in parti leggibili, come il modulo URL.

Esempio

Dividi la stringa di query in parti leggibili:

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);

Salva il codice sopra in un file chiamato "demo_querystring.js" e avvia il file:

Avvia demo_querystring.js:

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

L'indirizzo:

Produrrà questo risultato:

2017 July

Maggiori informazioni sul modulo URL nel capitolo Modulo URL di Node.js.