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 llamadohttp
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:
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
-
Importar el módulo
http
:const http = require('http');
Utilizamos
require
para importar el módulohttp
que viene integrado con Node.js. -
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.
-
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 contenidotext/plain
.res.end('Hola, Mundo!\n');
envía la respuesta al cliente y finaliza la comunicación.
-
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:
Deberías ver un mensaje en la terminal que dice:
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
- Creando un Servidor HTTP Simple
- Manejo de Solicitudes y Respuestas
- Sirviendo Archivos Estáticos
- Enrutamiento
Módulo 5: NPM y Gestión de Paquetes
- Introducción a NPM
- Instalación y Uso de Paquetes
- Creación y Publicación de Paquetes
- Versionado Semántico
Módulo 6: Framework Express.js
- Introducción a Express.js
- Configuración de una Aplicación Express
- Middleware
- Enrutamiento en Express
- Manejo de Errores
Módulo 7: Bases de Datos y ORMs
- Introducción a las Bases de Datos
- Usando MongoDB con Mongoose
- Usando Bases de Datos SQL con Sequelize
- Operaciones CRUD
Módulo 8: Autenticación y Autorización
- Introducción a la Autenticación
- Usando Passport.js
- Autenticación JWT
- Control de Acceso Basado en Roles
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con Mocha y Chai
- Pruebas de Integración
- Depuración de Aplicaciones Node.js
Módulo 10: Temas Avanzados
- Módulo Cluster
- Hilos de Trabajo
- Optimización del Rendimiento
- Construcción de APIs RESTful
- GraphQL con Node.js
Módulo 11: Despliegue y DevOps
- Variables de Entorno
- Usando PM2 para la Gestión de Procesos
- Desplegando en Heroku
- Integración y Despliegue Continuos