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.