Type something to search...
Configurar un servidor web con node.js

Configurar un servidor web con node.js

La estructura de HTTP

Las solicitudes y respuestas HTTP tienen estructuras específicas para ayudar a facilitar el intercambio de información entre un cliente y un servidor. Estas estructuras encapsulan toda la información importante necesaria para indicar al destinatario del mensaje cómo reaccionar.

Peticiones

Las solicitudes se componen de algunos elementos centrales que proporcionan información a un servidor. Los elementos centrales que se pueden esperar son:

  1. Método HTTP: el método HTTP suele ser un verbo, como GET y POST, o un sustantivo como OPTIONS y HEAD. Estos métodos informan al servidor de la intención de la solicitud y se utilizan para enrutar y procesar solicitudes con precisión. Por ejemplo, una solicitud HTTP que contiene un método GET implica que el cliente desea recuperar un recurso. La lista de métodos HTTP admitidos se puede encontrar utilizando la propiedad http.METHODS.

  2. Ruta: la ruta indica la ruta del recurso en relación con la URL raíz. Por ejemplo, realizar una solicitud GET a https://codigomalicioso.com/blog/tutoriales eliminaría elementos comunes como el protocolo https:// y el dominio codigomalicioso.com, dejando la ruta de blog/tutoriales

  3. Versión del protocolo HTTP: la versión del protocolo HTTP (es decir, HTTP/1.1, HTTP/2 y HTTP/3).

  4. Encabezados: los encabezados son opcionales y se utilizan para transmitir información adicional que puede ser importante al procesar una solicitud por parte de un servidor. Existe una lista extensa de encabezados estándar que se pueden usar, así como encabezados personalizados que se pueden agregar según la aplicación.

  5. Cuerpo: el cuerpo contiene datos que deben enviarse al servidor para procesar una solicitud. El cuerpo no se aprovecha para todos los tipos de solicitudes. Es más común ver un cuerpo adjunto a solicitudes con verbos como POST, PUT y PATCH.

Respuestas

Las respuestas se componen de elementos similares a las solicitudes de sus contrapartes, con algunas diferencias. Los elementos centrales que se pueden esperar en una respuesta son:

  1. Versión del protocolo HTTP: la versión del protocolo HTTP, similar a la solicitud.

  2. Código de estado: el código de estado indica si la solicitud fue exitosa y, de no ser así, por qué no fue exitosa.

  3. Mensaje de estado: el mensaje de estado proporciona una breve descripción del código de estado correspondiente.

  4. Encabezados: estos encabezados de respuesta son similares a los proporcionados en una solicitud.

  5. Cuerpo: el cuerpo de una respuesta contiene datos correspondientes al recurso obtenido. El cuerpo es opcional y contiene datos sólo cuando son necesarios para cumplir con la solicitud.

VERSIONES HTTP

HTTP/1.1

HTTP/1.1 fue una de las primeras versiones del protocolo HTTP que se diseñó e implementó. Opera enviando mensajes en forma de texto. HTTP/1.1 se usa comúnmente sobre TCP y es la versión HTTP más lenta en cuanto a transmisión de datos.

HTTP/2

HTTP/2 es una revisión importante de HTTP/1.1, desarrollada con la intención de intentar reducir la latencia de carga de la página web. Sin embargo, la desviación más significativa de HTTP/1.1 es la encapsulación de todos los mensajes en formato binario en lugar de texto plano. Esto permite que HTTP/2 aplique diferentes técnicas para la transmisión de datos, incluido el envío de paquetes de datos más pequeños para una mayor flexibilidad de transferencia de datos. Esto también permite realizar una única conexión entre dos entidades comunicantes en lugar de múltiples como lo exige HTTP/1.1. Al igual que HTTP/1.1, HTTP/2 también aprovecha TCP para el transporte.

HTTP/3

HTTP/3 es la tercera versión principal de HTTP. Si bien existen bastantes diferencias tecnológicas complejas entre HTTP/3 y las versiones anteriores, una de las más importantes es cómo el protocolo maneja los paquetes perdidos. HTTP/3 también se diferencia por el uso de un protocolo de transporte, aprovechando un protocolo de transporte llamado QUIC, que aplica controles específicos sobre UDP. HTTP/3 es actualmente un borrador de Internet.

El módulo HTTP

Para procesar peticiones http tanto en Javascript como en Node.js podemos usar el modulo http. Este tiene diferentes métodos siendo uno de los más utilizados .createServer() que nos permitirá crear un servidor http.

const server = http.createServer((req, res) => {
  res.end('Server is running!');
});

server.listen(8080, () => {
  const { address, port } = server.address();
  console.log(`Server is listening on: http://${address}:${port}`);
})

El método .createServer() toma un único argumento en forma de función de devolución de llamada. Esta función de devolución de llamada tiene dos argumentos principales; la solicitud (comúnmente escrita como req) y la respuesta (comúnmente escrita como res).

El objeto req contiene toda la información sobre una solicitud HTTP ingerida por el servidor. El objeto res contiene métodos y propiedades relacionados con la generación de una respuesta por parte del servidor HTTP.

En el ejemplo anterior, utilizamos el método .end() para enviar la cadena “Server is running” al cliente.

Una vez que el método .createServer() ha creado una instancia del servidor, debe comenzar a escuchar las conexiones. Este último paso se logra mediante el método .listen() en la instancia del servidor. Este método toma un número de puerto como primer argumento, lo que le indica al servidor que escuche las conexiones en el número de puerto dado. Además, el método .listen() toma una función de devolución de llamada opcional como segundo argumento, lo que le permite realizar una tarea después de que el servidor se haya iniciado exitosamente.

Tags :
Share :

Related Posts

Web Sockets

Web Sockets

Web Sockets Poder seguir un partido de futbol en una web, donde el marcador cambie a tiempo real sin necesidad de refrescar la página es lo que los web sockets están aportando. Un web socket per

read more