En la conferencia anterior,
aprendimos acerca de los aspectos esenciales de la creación de redes, incluyendo detalles del protocolo HTTP.
Ahora, vamos a ver cómo se puede utilizar el nodo para construir un servidor HTTP.
Aquí es donde el módulo HTTP principal que está integrado en Node viene en nuestra ayuda.
Además, vamos a ver un par de otros módulos de nodo núcleo que son útiles para
construir un servidor HTTP desde el uso de Node.
Entonces, ¿cómo hacemos uso del módulo HTTP del nodo?
Como mencioné, el módulo HTTP es uno de los módulos principales que están integrados en el nodo.
Por lo tanto, este es un módulo de red principal que admite
una base de alto rendimiento para la pila HTTP.
Por lo tanto, usar el módulo dentro de nuestra aplicación Node requiere
que importemos el módulo en nuestra aplicación.
Entonces esto es lo que hacemos diciendo const HTTP = require y,
el nombre del módulo HTTP allí.
Ahora, una vez importado el módulo
, este módulo HTTP soporta una función CreateServer que toma,
como parámetro, una función que actúa como
una función de devolución de llamada para el módulo CreateServer y
esta función tiene dos parámetros: solicitud y respuesta.
La solicitud es el mensaje de solicitud que viene desde
el lado del cliente y podemos analizar el mensaje de solicitud y luego extraer
mucha información del mensaje de solicitud y usarlo para tomar
decisiones sobre cómo construimos el mensaje de respuesta correspondiente a eso.
El mensaje de respuesta se construye utilizando el segundo parámetro aquí, el res,
en el que podemos construir los diversos valores de encabezado para
nuestro mensaje de respuesta HTTP y también el cuerpo del mensaje de respuesta HTTP.
Ahora, para iniciar el servidor,
una vez que cree el servidor,
entonces usted diría server.listen y luego proporcionar el número de puerto
y el nombre del host para el servidor y eso iniciará nuestro servidor.
Vamos a ver algunos detalles en el ejercicio de ejemplos que sigue a esta conferencia.
Como mencioné, la información del mensaje de solicitud entrante está disponible
a través del parámetro req que la función toma en el método CreateServer.
Por lo tanto, el req o solicitud,
si desea darle nombre completo,
puede llamarlo como una solicitud, pero en general hemos encontrado que en
ejemplos usamos req para representar el mensaje de solicitud.
Es compatible con las propiedades del objeto Javascript como
el encabezado, el cuerpo y también varias informaciones que se pueden extraer,
la URL y el método que ha sido solicitado por ese sitio cliente.
Y, en respuesta, construye la respuesta usando
el objeto Javascript de respuesta que admite esa función setHeader,
la función StatusCode que se puede establecer en el código de estado del mensaje de respuesta.
Y luego escribirías el mensaje diciendo
res.write y terminarías el mensaje diciendo
res.end y eso toma la parte final del cuerpo para el mensaje.
El cuerpo puede ser texto estándar o HTML o
cualquier otra información que desee incluir dentro del cuerpo del mensaje de respuesta.
Pero una vez que se llama al res.end,
la respuesta se envía de vuelta al cliente desde el servidor HTTP.
Otros dos módulos principales que son útiles para nosotros
cuando estamos construyendo el servidor HTTP del nodo es el módulo de ruta del nodo.
El módulo de ruta nos permite especificar la ruta de acceso a un archivo y luego
examinar si el archivo existe o examinar más detalles sobre un archivo.
Por ejemplo, la extensión del archivo,
nombre, etc.
Por lo tanto, el módulo de ruta se puede utilizar dentro de
nuestra aplicación al requerir el módulo de ruta como se muestra aquí.
Y luego, esto admite métodos,
como por ejemplo, path.resolve,
que convertirá una ruta relativa en
una ruta absoluta que toda la ruta al archivo.
También puede comprobar el nombre de la extensión del archivo llamando a la
función path.extname y proporcionar la ruta de acceso del archivo que
examinará la extensión del nombre de archivo.
Del mismo modo, el módulo del sistema de archivos, de
nuevo un módulo central en Node,
nos permitirá leer y escribir
archivos que existen en el sistema de archivos local en la computadora.
Por lo tanto, los módulos del sistema de archivos se pueden utilizar dentro de
nuestra aplicación Node solicitándolo como se muestra aquí.
Y luego, estos módulos del sistema de archivos admiten muchos métodos,
incluido un método para verificar si el archivo existe en el sistema de archivos local o no.
Por lo tanto, fs.exists tomará
el FilePath como el primer parámetro y el segundo parámetro es
una función de devolución de llamada que volverá con un parámetro que podemos nombrarlo como existe.
Este parámetro, existe, será verdadero si el archivo
existe y será falso si el archivo no existe dentro del sistema de archivos local.
Del mismo modo, puede leer desde el archivo creando una secuencia de lectura dada la ruta del archivo.
Por lo tanto, puede decir fs.createReadStream y
FilePath y esto se puede canalizar al mensaje de respuesta.
Así que el archivo se leerá desde el archivo
dado por FilePath y luego el contenido se pondrá
en el cuerpo del mensaje de respuesta llamando a una función encadenada como se muestra aquí.
Por lo tanto, estos son algunos ejemplos de algunos módulos de nodo núcleo que serán muy
útiles cuando estamos construyendo un servidor HTTP usando Node.
Ahora, que entendemos algunos detalles sobre el servidor HTTP y cómo se puede construir,
vamos al ejercicio,
donde construiremos un servidor HTTP simple que primero servirá
información básica y luego serviremos los archivos
que existen en una carpeta pública en nuestro proyecto.