Skip to content

Repository files navigation

API Go GetItems

API RESTful para obtener detalles de productos para comparación de artículos.

API Documentation

📖 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:8081

Endpoints

POST /productsByIDs

Obtiene 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]"
}

GET /health

Health check del servicio.

Arquitectura

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

Manejo de Errores

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

Tests

Ejecutar tests unitarios:

go test ./internal/usecase ./internal/domain -v

Cobertura:

  • Use Cases: 91.3%
  • Domain: 100%

Configuración

Variables de entorno:

  • LOG_LEVEL: DEBUG, INFO, WARN, ERROR (default: INFO)
  • PORT: Puerto del servidor (default: 8080)

Características

  • ✅ API RESTful con endpoints claros
  • ✅ Manejo robusto de errores
  • ✅ Logging estructurado
  • ✅ Tests unitarios
  • ✅ Clean Architecture
  • ✅ Comentarios explicativos en código

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages