te presento un mini modelo de una API REST en Node.js
Este es un mini modelo de una API REST desarrollado en Node.js con Express, siguiendo una arquitectura limpia basada en rutas, controladores y modelos. Está diseñado para gestionar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) sobre un recurso de usuarios, utilizando únicamente almacenamiento en memoria (sin base de datos externa).
Ideal para aprender, prototipar o como base para proyectos más grandes.
- ✅ Arquitectura modular: separación clara entre rutas, controladores y modelos.
- ✅ Soporte para los métodos HTTP más comunes:
GET
,POST
,PUT
,DELETE
. - ✅ Validación básica de datos y manejo de errores.
- ✅ Mensajes de respuesta en español.
- ✅ Código comentado y en español (nombres de variables, funciones y comentarios).
- ✅ Almacenamiento en memoria (sin dependencia de base de datos).
- ✅ Listo para extender (fácil de conectar a MongoDB, MySQL, etc.).
- Clona o descarga este proyecto en tu máquina.
- Abre una terminal y navega hasta la carpeta del proyecto:
cd mi-api
- Instala las dependencias:
npm install
- Inicia el servidor:
npm start
Por defecto, el servidor escucha en el puerto 3000. Puedes cambiarlo con la variable de entorno
PUERTO
.
Todos los endpoints están bajo la ruta base: http://localhost:3000/api/usuarios
Método | Ruta | Descripción | Cuerpo requerido (JSON) |
---|---|---|---|
GET |
/ |
Obtener todos los usuarios | — |
GET |
/:id |
Obtener un usuario por su ID | — |
POST |
/ |
Crear un nuevo usuario | { "nombre": "string", "correo": "string", "edad": number } |
PUT |
/:id |
Actualizar un usuario existente | { "nombre": "...", "correo": "...", "edad": ... } (parcial o completo) |
DELETE |
/:id |
Eliminar un usuario por su ID | — |
⚠️ Nota: El campoid
en las rutas debe ser un número entero válido.
POST http://localhost:3000/api/usuarios
Content-Type: application/json
{
"nombre": "María López",
"correo": "maria@example.com",
"edad": 30
}
Respuesta exitosa (201 Created):
{
"id": 3,
"nombre": "María López",
"correo": "maria@example.com",
"edad": 30
}
GET http://localhost:3000/api/usuarios
Respuesta (200 OK):
[
{
"id": 1,
"nombre": "Ana García",
"correo": "ana@example.com",
"edad": 28
},
{
"id": 2,
"nombre": "Luis Pérez",
"correo": "luis@example.com",
"edad": 34
}
]
DELETE http://localhost:3000/api/usuarios/1
Respuesta (200 OK):
{
"mensaje": "Usuario eliminado correctamente"
}
mi-api/
├── index.js # Punto de entrada de la aplicación
├── routes/
│ └── usuarios.js # Definición de rutas
├── controllers/
│ └── usuariosController.js # Lógica de negocio (controladores)
└── models/
└── usuarioModel.js # Modelo de datos (almacenamiento en memoria)
Este proyecto es un modelo base. Puedes mejorarlo con:
- ✅ Conexión a una base de datos real (MongoDB, PostgreSQL, MySQL).
- ✅ Validación de esquemas con Joi o Zod.
- ✅ Autenticación y autorización (JWT, OAuth).
- ✅ Paginación y filtros en las consultas.
- ✅ Logging de solicitudes y errores.
- ✅ Pruebas unitarias e integración (Jest, Supertest).
- ✅ Dockerización.
Este proyecto es de código abierto y está disponible bajo la licencia MIT.
Ver archivo LICENSE
para más detalles.
Desarrollado con ❤️ para fines educativos y de aprendizaje.
¿Tienes sugerencias o encontraste un error? ¡Abre un issue o un pull request!
💡 Consejo: Usa Postman o Thunder Client (extensión de VS Code) para probar fácilmente los endpoints.