Cómo Crear una API REST con Node.js y Express: Guía Práctica

| Última modificación: 24 de noviembre de 2025 | Tiempo de Lectura: 5 minutos
Premios Blog KeepCoding 2025

API REST con Node.js y Express. Crear una API REST con Node.js y Express es una de las habilidades más demandadas actualmente para desarrolladores frontend, backend o fullstack. Como profesional que ha implementado múltiples proyectos reales usando estas tecnologías, quiero compartir contigo una guía práctica, didáctica y aplicada que te lleve de cero a tu propia API REST funcional, combinando conceptos, ejemplos claros y buenas prácticas que he ido aprendiendo trabajando directamente con clientes y startups.

¿Qué es exactamente una API REST y por qué usar Node.js y Express?

Cuando comencé en desarrollo backend, entendí que API REST es la manera estándar de comunicar sistemas distintos mediante protocolos HTTP usando recursos bien definidos y operaciones estándar como GET, POST, PUT y DELETE. REST optimiza la escalabilidad y mantenimiento de aplicaciones web o móviles que necesitan consumir datos en tiempo real o almacenar información. Ahora, ¿por qué Node.js y Express?

  • Node.js es un entorno de ejecución basado en JavaScript, rápido y eficiente gracias a su modelo asíncrono y monohilo, ideal para APIs que manejan muchas conexiones simultáneas.
  • Express es un framework minimalista que simplifica la gestión de rutas, middlewares y respuestas HTTP, permitiendo concentrarse en la lógica del negocio sin exceso de configuración.

Durante años, en proyectos como un sistema de reservas online, he comprobado que esta combinación acelera el desarrollo con menos errores y código más limpio.

Preparando el entorno para tu API REST con Node.js y Express

API REST con Node.js y Express

Es esencial tener un entorno sólido antes de codificar. Este es mi paso inicial:

  1. Instala Node.js desde su página oficial nodejs.org.
  2. Crea una carpeta para tu proyecto y abre la terminal en ella.
  3. Ejecuta: npm init -y npm install express
  4. Opcionalmente, instala nodemon para desarrollo dinámico: npm install --save-dev nodemon
  5. Modifica package.json para agregar: "scripts": { "start": "node index.js", "dev": "nodemon index.js" }

De esta forma, tendrás un entorno eficaz y listo para crecer.

Código base: creando tu servidor con Express

En un archivo index.js coloca el siguiente código:

const express = require(‘express’);
const app = express();

// Middleware para parsear JSON
app.use(express.json());

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
console.log(`Servidor ejecutándose en puerto ${PORT}`);
});

Lo que hace este código es dejar tu servidor a la escucha. Personalmente, cuando empiezo un proyecto, siempre corro npm run dev para que el código recargue automáticamente y hacer iteraciones rápidas.

Diseñando rutas RESTful con ejemplos prácticos

En uno de mis proyectos más desafiantes desarrollé un CRUD completo para manejar usuarios y productos. Aquí te dejo un ejemplo simplificado que puedes ampliar fácilmente:

let items = [
{ id: 1, nombre: ‘Artículo 1’, descripcion: ‘Descripción ejemplo’ },
];

// Obtener todos los items
app.get(‘/api/items’, (req, res) => {
res.json(items);
});

// Obtener item por id
app.get(‘/api/items/:id’, (req, res) => {
const id = parseInt(req.params.id);
const item = items.find(i => i.id === id);
if (item) {
res.json(item);
} else {
res.status(404).json({ mensaje: ‘Item no encontrado’ });
}
});

// Crear nuevo item
app.post(‘/api/items’, (req, res) => {
const { nombre, descripcion } = req.body;
if (!nombre || !descripcion) {
return res.status(400).json({ mensaje: ‘Faltan campos obligatorios’ });
}
const id = items.length ? items[items.length – 1].id + 1 : 1;
const newItem = { id, nombre, descripcion };
items.push(newItem);
res.status(201).json(newItem);
});

// Actualizar un item
app.put(‘/api/items/:id’, (req, res) => {
const id = parseInt(req.params.id);
const index = items.findIndex(i => i.id === id);

if (index === -1) {
return res.status(404).json({ mensaje: ‘Item no encontrado’ });
}

const { nombre, descripcion } = req.body;
if (!nombre || !descripcion) {
return res.status(400).json({ mensaje: ‘Faltan campos obligatorios’ });
}

items[index] = { id, nombre, descripcion };
res.json(items[index]);
});

// Eliminar un item
app.delete(‘/api/items/:id’, (req, res) => {
const id = parseInt(req.params.id);
const initialLength = items.length;
items = items.filter(i => i.id !== id);

if (items.length === initialLength) {
return res.status(404).json({ mensaje: ‘Item no encontrado’ });
}

res.status(204).send();
});

Este código cumple con estándares REST, maneja errores comunes y valida campos obligatorios, lo que evita fallos ante malos datos. Te recomiendo probar tus endpoints con Postman o Insomnia para tener feedback inmediato.

Buenas prácticas clave para tu API REST con Node.js y Express

En varias aplicaciones he encontrado que aplicar estas prácticas marca la diferencia entre un backend robusto y otro propenso a fallos:

  • Validación estricta de datos: Usa librerías como Joi o express-validator para evitar que el servidor procese información incompleta o errónea.
  • Manejo centralizado de errores: Crea middlewares para capturar errores y responder con mensajes claros, manteniendo el servidor estable.
  • Documentación activa: Integra herramientas como Swagger para que otros desarrolladores (o tú en el futuro) entiendan rápida y automáticamente cómo usar tu API.
  • Seguridad ante todo: Implementa autenticación con JWT y políticas de CORS para proteger tus datos.
  • Versionado: Define versiones en tus rutas (ejemplo: /api/v1/items) para manejar cambios sin afectar clientes existentes.
  • Modulariza el código: separando rutas, controladores y modelos para mejor mantenimiento.

Cómo implementar autenticación básica con JWT en tu API REST

En uno de mis proyectos, tuve que proteger endpoints sensibles para usuarios registrados. La implementación fue con JWT (JSON Web Tokens). Te dejo una versión simplificada:

  1. Instala las dependencias: npm install jsonwebtoken bcryptjs
  2. Crea un endpoint para login que valide usuario y contraseña, y retorne un token.
  3. Añade un middleware que valide ese token en rutas privadas.

Ejemplo clave:

const jwt = require(‘jsonwebtoken’);
const SECRET = ‘tu_clave_secreta_aqui’;

// Middleware para validar token
function autenticarToken(req, res, next) {
const authHeader = req.headers[‘authorization’];
const token = authHeader && authHeader.split(‘ ‘)[1];

if (!token) return res.sendStatus(401);

jwt.verify(token, SECRET, (err, usuario) => {
if (err) return res.sendStatus(403);
req.usuario = usuario;
next();
});
}

// Ruta protegida
app.get(‘/api/protegido’, autenticarToken, (req, res) => {
res.json({ mensaje: ‘Acceso concedido’, usuario: req.usuario });
});

Esta adición otorga seguridad real para producción y es una gran oportunidad para profundizar.

Recursos para seguir creciendo en desarrollo backend con Node.js y Express

Para complementar tu aprendizaje, te recomiendo:

  • Leer la documentación oficial de Express.
  • Profundizar en bases de datos NoSQL como MongoDB para almacenar datos de manera efectiva.
  • Visitar Mozilla Developer Network para entender HTTP y REST a fondo.
  • Explorar tutoriales avanzados sobre despliegue en servicios como Heroku o AWS.

Conclusión

Aprender a crear una API REST con Node.js y Express no solo es accesible, sino que abre puertas para desarrollar aplicaciones profesionales, escalables y modernas. En mi experiencia, comenzar con un enfoque claro, validar siempre la entrada y aplicar buenas prácticas asegura que tus APIs sean confiables y fáciles de mantener. Invito a todos los que estén interesados a practicar los conceptos aquí mostrados y no dejar de explorar temas de seguridad, autenticación y documentación, que realmente aportan valor completo a cualquier backend.

bootcamps web

Si quieres acelerar tu carrera y dominar estas tecnologías de la mano de expertos, te recomiendo el Bootcamp de Desarrollo Web Full Stack de KeepCoding, donde aprenderás no solo Node.js y Express, sino todo el stack necesario para convertirte en un profesional demandado por la industria.

KeepCoding Bootcamps
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.