Construyendo APIs RESTful con Node.js y Express
Guía completa para crear APIs robustas y escalables usando Node.js y Express.
Construyendo APIs RESTful con Node.js y Express
Las APIs RESTful son la columna vertebral de las aplicaciones web modernas. En este artículo, aprenderás a construir APIs profesionales con Node.js y Express.
¿Qué es una API RESTful?
REST (Representational State Transfer) es un estilo arquitectónico para diseñar servicios web. Una API RESTful sigue estos principios:
Configuración inicial
import express from 'express';
import cors from 'cors';
import helmet from 'helmet';
const app = express();
// Middlewares
app.use(cors());
app.use(helmet());
app.use(express.json());
// Puerto
const PORT = process.env.PORT || 4000;
app.listen(PORT, () => {
console.log(Servidor corriendo en puerto ${PORT});
});
Estructura de carpetas recomendada
src/
├── controllers/ # Lógica de negocio
├── routes/ # Definición de rutas
├── middleware/ # Middlewares personalizados
├── models/ # Modelos de datos
├── services/ # Servicios externos
├── utils/ # Utilidades
└── index.ts # Punto de entrada
Creando un CRUD completo
Modelo de datos
interface Proyecto {
id: number;
titulo: string;
descripcion: string;
tecnologias: string[];
createdAt: Date;
}
Controller
// GET /api/proyectos
export const getProyectos = async (req, res) => {
try {
const proyectos = await ProyectoService.findAll();
res.json({ success: true, data: proyectos });
} catch (error) {
res.status(500).json({ success: false, error: error.message });
}
};
// POST /api/proyectos
export const createProyecto = async (req, res) => {
try {
const proyecto = await ProyectoService.create(req.body);
res.status(201).json({ success: true, data: proyecto });
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
};
Manejo de errores
Un buen manejo de errores es crucial:
// Middleware de errores
const errorHandler = (err, req, res, next) => {
console.error(err.stack);
res.status(err.status || 500).json({
success: false,
error: err.message || 'Error interno del servidor'
});
};
Validación de datos
Usa bibliotecas como Zod o Joi para validar las entradas:
import { z } from 'zod';
const proyectoSchema = z.object({
titulo: z.string().min(3).max(100),
descripcion: z.string().min(10),
tecnologias: z.array(z.string())
});
Seguridad
Consideraciones de seguridad importantes:
Conclusión
Construir APIs RESTful profesionales requiere atención al detalle en estructura, validación, manejo de errores y seguridad. Con estas bases, estarás listo para crear backends robustos y escalables.