Módulo HTTP de Node.js


El módulo HTTP incorporado

Node.js tiene un módulo integrado llamado HTTP, que permite a Node.js transferir datos a través del Protocolo de transferencia de hipertexto (HTTP).

Para incluir el módulo HTTP, utilice el require()método:

var http = require('http');

Node.js como servidor web

El módulo HTTP puede crear un servidor HTTP que escuche los puertos del servidor y devuelva una respuesta al cliente.

Utilice el createServer()método para crear un servidor HTTP:

Ejemplo

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 función pasada al http.createServer() método se ejecutará cuando alguien intente acceder a la computadora en el puerto 8080.

Guarde el código anterior en un archivo llamado "demo_http.js" e inicie el archivo:

Inicie demo_http.js:

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

Si ha seguido los mismos pasos en su computadora, verá el mismo resultado que el ejemplo: http://localhost:8080



Agregar un encabezado HTTP

Si se supone que la respuesta del servidor HTTP se muestra como HTML, debe incluir un encabezado HTTP con el tipo de contenido correcto:

Ejemplo

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

El primer argumento del res.writeHead()método es el código de estado, 200 significa que todo está bien, el segundo argumento es un objeto que contiene los encabezados de respuesta.


Leer la cadena de consulta

La función pasada a http.createServer() tiene un reqargumento que representa la solicitud del cliente, como un objeto (objeto http.IncomingMessage).

Este objeto tiene una propiedad llamada "url" que contiene la parte de la url que viene después del nombre de 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);

Guarde el código anterior en un archivo llamado "demo_http_url.js" e inicie el archivo:

Inicie demo_http_url.js:

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

Si ha seguido los mismos pasos en su computadora, debería ver dos resultados diferentes al abrir estas dos direcciones:

http://localhost:8080/verano

Producirá este resultado:

/summer

http://localhost:8080/invierno

Producirá este resultado:

/winter

Dividir la cadena de consulta

Hay módulos integrados para dividir fácilmente la cadena de consulta en partes legibles, como el módulo de URL.

Ejemplo

Divida la cadena de consulta en partes legibles:

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

Guarde el código anterior en un archivo llamado "demo_querystring.js" e inicie el archivo:

Inicie demo_querystring.js:

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

La dirección:

Producirá este resultado:

2017 July

Obtenga más información sobre el módulo de URL en el capítulo Módulo de URL de Node.js.