API RESTful para obtener detalles de productos para comparación de artículos.
📖 OpenAPI Specification: openapi.yaml
Para visualizar la documentación interactiva:
# Opción 1: Swagger UI online
open https://editor.swagger.io/
# Luego pegar el contenido de openapi.yaml
# Opción 2: Con Docker
docker run -p 8081:8080 -e SWAGGER_JSON=/openapi.yaml -v $(pwd)/openapi.yaml:/openapi.yaml swaggerapi/swagger-ui
open http://localhost:8081Obtiene múltiples productos por sus IDs para funcionalidad de comparación.
Request:
["1", "2", "3"]Response (200):
[
{
"id": "1",
"name": "Producto 1",
"image_url": "http://example.com/prod1.jpg",
"description": "Descripción del producto 1",
"price": 199.99,
"rating": 4.5,
"specifications": {
"color": "Rojo",
"weight": 1.2,
"weight_unit": "kg"
}
}
]Response (404) - Algunos productos no encontrados:
{
"error": "PRODUCT_NOT_FOUND",
"message": "Products not found: [999]",
"details": "missing_ids: [999]"
}Health check del servicio.
Entrypoints (HTTP) → Use Cases (Business Logic) → Domain → Infrastructure (JSON Storage)
- Clean Architecture con separación de responsabilidades
- JSON file storage para persistencia local
- Structured logging con request tracing
- Error handling tipado y contextual
| Error Type | Status | Descripción |
|---|---|---|
PRODUCT_NOT_FOUND |
404 | Productos no encontrados |
INVALID_PRODUCT_ID |
400 | ID de producto inválido |
EMPTY_REQUEST |
400 | Request vacío |
STORAGE_ERROR |
500 | Error de archivo |
INVALID_JSON |
400 | JSON mal formateado |
Ejecutar tests unitarios:
go test ./internal/usecase ./internal/domain -vCobertura:
- Use Cases: 91.3%
- Domain: 100%
Variables de entorno:
LOG_LEVEL: DEBUG, INFO, WARN, ERROR (default: INFO)PORT: Puerto del servidor (default: 8080)
- ✅ API RESTful con endpoints claros
- ✅ Manejo robusto de errores
- ✅ Logging estructurado
- ✅ Tests unitarios
- ✅ Clean Architecture
- ✅ Comentarios explicativos en código