Aprende a crear un servidor en NodeJS desde 0. Utilizando las herramientas ofrecidas por la plataforma o usando frameworks como express.
¿Qué es Node.js?
Node.js es un entorno de ejecución de JavaScript construido sobre el motor V8 de Google Chrome. Permite ejecutar código JavaScript fuera del navegador, lo que lo convierte en una excelente opción para crear aplicaciones del lado del servidor, como APIs, servidores web y aplicaciones en tiempo real.
Una de las principales características de Node.js es su enfoque en la programación asíncrona, lo que significa que puede manejar múltiples solicitudes de manera eficiente sin bloquear otras operaciones. Esto lo hace especialmente útil para aplicaciones que requieren manejar un alto volumen de tráfico o trabajar con datos en tiempo real.
Requisitos previos
Antes de comenzar a crear un servidor en Node.js, asegúrate de tener lo siguiente:
- Node.js instalado en tu sistema. Puedes descargarlo desde nodejs.org.
- Un editor de código, como Visual Studio Code o cualquier otro de tu preferencia.
- Conocimientos básicos de JavaScript y la terminal de tu sistema operativo.
Instalación de Node.js
Si no tienes Node.js instalado, sigue estos pasos:
- Descargar Node.js: Visita el sitio web oficial de Node.js y descarga la última versión LTS (Long Term Support).
- Instalar: Abre el archivo descargado y sigue las instrucciones de instalación. Durante el proceso, también se instalará npm (Node Package Manager), que es útil para instalar paquetes adicionales.
Para verificar si la instalación fue exitosa, abre tu terminal y escribe los siguientes comandos:
node -v
Este comando debe devolver la versión de Node.js instalada. Luego, verifica la instalación de npm con:
npm -v
Ambos deben mostrar números de versión, lo que confirma que Node.js y npm están instalados correctamente.
Creando un Servidor en Node.js
Ahora que tienes todo listo, pasemos a la parte emocionante: crear tu propio servidor. Vamos a empezar con lo más básico y luego añadiremos funcionalidad.
Paso 1: Configuración inicial
Primero, crea una carpeta para tu proyecto. Abre la terminal y ejecuta:
mkdir mi-servidor
cd mi-servidor
Luego, inicializa un proyecto Node.js con el comando:
npm init -y
Este comando creará un archivo package.json
en tu proyecto, que se usará para gestionar dependencias y scripts.
Paso 2: Creando el archivo de servidor
En tu editor de código, dentro de la carpeta del proyecto, crea un archivo llamado server.js
. Este será el archivo principal que contendrá nuestro código del servidor.
En el archivo server.js
, escribe el siguiente código básico para configurar un servidor:
const http = require('http');
// Crear el servidor
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('¡Hola, Mundo!\n');
});
// Escuchar en el puerto 3000
const port = 3000;
server.listen(port, () => {
console.log(`El servidor está corriendo en http://localhost:${port}`);
});
Explicación del código
require('http')
: Este comando carga el módulo HTTP, que es nativo en Node.js. Lo necesitamos para crear un servidor.http.createServer()
: Este método crea un servidor. La función pasada como parámetro recibe dos objetos:req
(la solicitud del cliente) yres
(la respuesta que enviaremos al cliente).res.statusCode = 200
: Configura el estado de la respuesta. El código 200 indica que todo ha ido bien.res.setHeader('Content-Type', 'text/plain')
: Establece el tipo de contenido que el servidor enviará. En este caso, es texto plano.res.end()
: Finaliza la respuesta enviando el mensaje “¡Hola, Mundo!”.server.listen(port, callback)
: Este método hace que el servidor escuche en el puerto especificado (en este caso, el puerto 3000).
Paso 3: Ejecutar el servidor
Para ejecutar tu servidor, vuelve a la terminal, asegúrate de estar en la carpeta del proyecto y ejecuta el siguiente comando:
node server.js
Deberías ver el mensaje en la consola:
El servidor está corriendo en http://localhost:3000
Abre tu navegador y visita http://localhost:3000
. Deberías ver el mensaje “¡Hola, Mundo!”.
Mejora del Servidor: Rutas Simples
El servidor que hemos creado hasta ahora es muy básico. Vamos a mejorarlo añadiendo algunas rutas para que podamos manejar diferentes solicitudes.
Modifica el código del archivo server.js
de la siguiente manera:
const http = require('http');
// Crear el servidor
const server = http.createServer((req, res) => {
res.setHeader('Content-Type', 'text/plain');
if (req.url === '/') {
res.statusCode = 200;
res.end('Bienvenido a la página principal\n');
} else if (req.url === '/about') {
res.statusCode = 200;
res.end('Acerca de nosotros\n');
} else {
res.statusCode = 404;
res.end('Página no encontrada\n');
}
});
// Escuchar en el puerto 3000
const port = 3000;
server.listen(port, () => {
console.log(`El servidor está corriendo en http://localhost:${port}`);
});
Explicación del nuevo código
req.url
: Este objeto contiene la URL solicitada por el cliente. Conif
yelse if
manejamos diferentes rutas.- Rutas manejadas:
/
: La página principal./about
: Una página de “Acerca de”.- Si el usuario intenta acceder a cualquier otra URL, responderemos con un error 404.
Vuelve a ejecutar el servidor con node server.js
y prueba las rutas http://localhost:3000/
y http://localhost:3000/about
. También puedes intentar ingresar una ruta inexistente, como http://localhost:3000/unknown
, y verás cómo aparece el mensaje de error 404.
Usando Express para Simplificar la Creación de Servidores
Aunque el módulo HTTP nativo de Node.js es útil, en proyectos más grandes puede volverse tedioso manejar muchas rutas y solicitudes manualmente. Aquí es donde Express, un marco web minimalista, se vuelve muy útil. Con Express, podemos simplificar mucho el proceso de creación de servidores.
Instalación de Express
Primero, instala Express ejecutando el siguiente comando en tu terminal:
npm install express
Creando un servidor con Express
Una vez que Express esté instalado, vamos a reescribir nuestro servidor utilizando este marco. Modifica tu archivo server.js
como sigue:
const express = require('express');
const app = express();
// Ruta principal
app.get('/', (req, res) => {
res.send('Bienvenido a la página principal');
});
// Ruta "Acerca de"
app.get('/about', (req, res) => {
res.send('Acerca de nosotros');
});
// Manejar errores 404
app.use((req, res) => {
res.status(404).send('Página no encontrada');
});
// Escuchar en el puerto 3000
const port = 3000;
app.listen(port, () => {
console.log(`El servidor está corriendo en http://localhost:${port}`);
});
Explicación del código con Express
express()
: Inicializa una nueva aplicación Express.app.get()
: Define rutas para manejar solicitudes GET. Simplifica el manejo de las rutas en comparación con el uso del módulo HTTP.app.use()
: Maneja cualquier ruta no definida y envía un mensaje de error 404.app.listen()
: Configura el puerto en el que la aplicación escuchará las solicitudes.
Conclusión
En este artículo, hemos aprendido a crear un servidor en Node.js utilizando el módulo HTTP básico, y luego hemos visto cómo podemos mejorar nuestro servidor utilizando Express para simplificar el manejo de rutas y respuestas. Ambos enfoques tienen sus ventajas dependiendo del tamaño y complejidad de tu proyecto.
Node.js es una herramienta poderosa y flexible que puede ayudarte a crear aplicaciones rápidas y escalables. Si eres nuevo en el desarrollo de servidores, te animo a experimentar y ampliar las funcionalidades de tu servidor, como añadir bases de datos, autenticación, y más.
Pingback: How to Create a Server with Node.js and Express › BuildYourselfWithCode