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
httpmodule: Node.js proporciona un módulo llamadohttpque 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
requirepara importar el módulohttpque 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.createServerpara 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.listenpara 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
