Este proyecto implementa una API RESTful simple para gestionar una colección de libros, utilizando Node.js, Express y MongoDB. La aplicación está dockerizada para facilitar su despliegue y uso en cualquier entorno.
- ✅ API RESTful completa con operaciones CRUD
- 📊 Base de datos MongoDB para almacenamiento persistente
- 🐳 Dockerización de la aplicación y la base de datos
- 📚 Datos de ejemplo precargados
- 🔍 Filtrado de resultados
- 📝 Documentación completa de endpoints
| Método | Ruta | Descripción |
|---|---|---|
GET |
/api/books |
Obtener todos los libros |
GET |
/api/books?author=Nombre&genre=Género |
Filtrar libros por diferentes campos |
GET |
/api/books/:isbn |
Obtener un libro específico por ISBN |
POST |
/api/books |
Crear un nuevo libro |
PUT |
/api/books/:isbn |
Actualizar un libro existente o crear uno nuevo |
DELETE |
/api/books/:isbn |
Eliminar un libro |
- Docker y Docker Compose
- Git
-
Clonar el repositorio:
git clone https://github.com/tu-usuario/api-node-docker.git cd api-node-docker -
Iniciar los contenedores con Docker Compose:
docker-compose up
La API estará disponible en http://localhost:3000
Si prefieres desarrollar sin Docker:
-
Asegúrate de tener MongoDB instalado y ejecutándose localmente
-
Instala las dependencias:
npm install
-
Crea un archivo
.envcon la configuración:PORT=3000 MONGODB_URI=mongodb://localhost:27017/libraryDB -
Ejecuta el seeder para cargar datos de ejemplo:
npm run seed
-
Inicia la aplicación en modo desarrollo:
npm run dev
api-node-docker/
├── src/
│ ├── models/ # Modelos de datos
│ ├── routes/ # Rutas de la API
│ ├── scripts/ # Scripts de utilidad
│ ├── seeders/ # Scripts de carga de datos
│ └── server.js # Punto de entrada de la aplicación
├── Dockerfile # Configuración para construir la imagen Docker
├── docker-compose.yml # Configuración para orquestar contenedores
├── package.json # Dependencias y scripts
└── README.md # Documentación
curl http://localhost:3000/api/bookscurl http://localhost:3000/api/books?genre=Fantasíacurl -X POST http://localhost:3000/api/books \
-H "Content-Type: application/json" \
-d '{
"title": "El nombre del viento",
"author": "Patrick Rothfuss",
"year": 2007,
"genre": "Fantasía",
"pages": 662,
"isbn": "9788401352836",
"available": true
}'curl -X PUT http://localhost:3000/api/books/9788401352836 \
-H "Content-Type: application/json" \
-d '{
"available": false
}'curl -X DELETE http://localhost:3000/api/books/9788401352836| Comando | Descripción |
|---|---|
npm run dev |
Inicia el servidor en modo desarrollo con recarga automática |
npm start |
Inicia el servidor en modo producción |
npm run seed |
Carga datos de ejemplo en la base de datos |
docker-compose up |
Inicia los contenedores con Docker Compose |
docker-compose down |
Detiene y elimina los contenedores |
Este proyecto está bajo la Licencia MIT.