En este tema, aprenderás a crear un servidor HTTP básico utilizando Node.js. Este es un paso fundamental para entender cómo funcionan los servidores web y cómo Node.js maneja las solicitudes y respuestas HTTP.

Conceptos Clave

Antes de comenzar con el código, es importante entender algunos conceptos básicos:

  • HTTP (HyperText Transfer Protocol): Es el protocolo utilizado por la web para la comunicación entre clientes (navegadores) y servidores.
  • Servidor HTTP: Es un software que recibe solicitudes HTTP de los clientes y responde con recursos como páginas HTML, archivos, datos JSON, etc.
  • Node.js http module: Node.js proporciona un módulo llamado http que permite crear servidores HTTP de manera sencilla.

Paso 1: Configuración del Entorno

Asegúrate de tener Node.js instalado en tu sistema. Puedes verificarlo ejecutando el siguiente comando en tu terminal:

node -v

Si no tienes Node.js instalado, puedes descargarlo e instalarlo desde nodejs.org.

Paso 2: Creando el Servidor HTTP

Vamos a crear un archivo llamado server.js y escribir el siguiente código:

// Importamos el módulo http
const http = require('http');

// Definimos el puerto en el que el servidor escuchará
const port = 3000;

// Creamos el servidor
const server = http.createServer((req, res) => {
  // Establecemos el encabezado de la respuesta
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  
  // Enviamos la respuesta
  res.end('Hola, Mundo!\n');
});

// Hacemos que el servidor escuche en el puerto definido
server.listen(port, () => {
  console.log(`Servidor escuchando en http://localhost:${port}`);
});

Explicación del Código

  1. Importar el módulo http:

    const http = require('http');
    

    Utilizamos require para importar el módulo http que viene integrado con Node.js.

  2. Definir el puerto:

    const port = 3000;
    

    Definimos el puerto en el que nuestro servidor escuchará las solicitudes. En este caso, hemos elegido el puerto 3000.

  3. Crear el servidor:

    const server = http.createServer((req, res) => {
      res.writeHead(200, { 'Content-Type': 'text/plain' });
      res.end('Hola, Mundo!\n');
    });
    

    Utilizamos http.createServer para crear un servidor. Este método toma una función de callback que se ejecuta cada vez que el servidor recibe una solicitud. La función de callback tiene dos parámetros:

    • req: Representa la solicitud del cliente.
    • res: Representa la respuesta que el servidor enviará al cliente.

    Dentro de la función de callback:

    • res.writeHead(200, { 'Content-Type': 'text/plain' }); establece el encabezado de la respuesta con un código de estado 200 (OK) y un tipo de contenido text/plain.
    • res.end('Hola, Mundo!\n'); envía la respuesta al cliente y finaliza la comunicación.
  4. Hacer que el servidor escuche en el puerto definido:

    server.listen(port, () => {
      console.log(`Servidor escuchando en http://localhost:${port}`);
    });
    

    Utilizamos server.listen para hacer que el servidor escuche en el puerto definido. La función de callback se ejecuta cuando el servidor comienza a escuchar.

Paso 3: Ejecutar el Servidor

Para ejecutar el servidor, abre tu terminal y navega hasta el directorio donde se encuentra tu archivo server.js. Luego, ejecuta el siguiente comando:

node server.js

Deberías ver un mensaje en la terminal que dice:

Servidor escuchando en http://localhost:3000

Abre tu navegador web y navega a http://localhost:3000. Deberías ver el mensaje "Hola, Mundo!".

Ejercicio Práctico

Ejercicio 1: Modificar la Respuesta del Servidor

Modifica el servidor para que responda con un mensaje HTML en lugar de texto plano. El mensaje HTML debe ser:

<!DOCTYPE html>
<html>
<head>
  <title>Mi Primer Servidor</title>
</head>
<body>
  <h1>¡Hola, Mundo!</h1>
  <p>Este es mi primer servidor HTTP con Node.js</p>
</body>
</html>

Solución

const http = require('http');
const port = 3000;

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/html' });
  res.end(`
    <!DOCTYPE html>
    <html>
    <head>
      <title>Mi Primer Servidor</title>
    </head>
    <body>
      <h1>¡Hola, Mundo!</h1>
      <p>Este es mi primer servidor HTTP con Node.js</p>
    </body>
    </html>
  `);
});

server.listen(port, () => {
  console.log(`Servidor escuchando en http://localhost:${port}`);
});

Conclusión

En este tema, has aprendido a crear un servidor HTTP simple utilizando Node.js. Has visto cómo manejar solicitudes y enviar respuestas básicas. Este es el primer paso para construir aplicaciones web más complejas con Node.js. En el próximo tema, aprenderás a manejar solicitudes y respuestas de manera más detallada.

Curso de Node.js

Módulo 1: Introducción a Node.js

Módulo 2: Conceptos Básicos

Módulo 3: Sistema de Archivos y E/S

Módulo 4: HTTP y Servidores Web

Módulo 5: NPM y Gestión de Paquetes

Módulo 6: Framework Express.js

Módulo 7: Bases de Datos y ORMs

Módulo 8: Autenticación y Autorización

Módulo 9: Pruebas y Depuración

Módulo 10: Temas Avanzados

Módulo 11: Despliegue y DevOps

Módulo 12: Proyectos del Mundo Real

© Copyright 2024. Todos los derechos reservados