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 req
argumento 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:
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.