Esta API permite gestionar productos en una tienda en línea. Ofrece funcionalidades como:
- Crear productos
- Consultar productos con filtros
- Obtener productos por su ID
- Actualizar productos
- Eliminar productos
- Lenguaje: Go (Golang)
- Framework: Gin
- Base de Datos: MongoDB
- Documentación: Swagger
- Docker: Para configuración y despliegue de servicios
- GET /products: Obtiene todos los productos activos o filtra según los parámetros de consulta. Ejemplo localhost:8080/v1/products?min_price=10&max_price=15&categories=posters&categories=deadpool categories es un array donde las condiciones se intersectan (&)
- GET /products/{id}: Obtiene un producto por su identificador.
- POST /products: Crea un nuevo producto.
- PATCH /products/{id}: Actualiza campos específicos de un producto.
- DELETE /products/{id}: Marca un producto como eliminado.
- Tener instalado Docker y Docker Compose.
- Puerto
8080
disponible en el host.
-
Clona el repositorio:
git clone https://github.com/mp02/fravega-tech cd tu-repositorio
-
Levanta los servicios usando Docker Compose:
docker-compose up --build
Esto inicializará los siguientes servicios:
- MongoDB
- Contenedor para cargar datos iniciales (mongo-seed)
- La aplicación en Go
-
Accede a la API:
- Swagger: http://localhost:8080/api/doc/index.html
- Endpoints directamente en http://localhost:8080.
La documentación de la API se encuentra disponible en Swagger:
Ejemplo de uso con Swagger:
- Ve a la URL de Swagger.
- Explora los endpoints disponibles.
- Prueba las operaciones directamente desde la interfaz de Swagger.
El archivo docker-compose.yml
configura las variables necesarias. Por defecto:
-
MongoDB:
- Usuario:
root
- Contraseña:
example
- Base de datos:
productsdb
- Usuario:
-
Aplicación:
MONGO_URI
:mongodb://root:example@mongodb:27017/productsdb?authSource=admin
{
"name": "Smartphone",
"description": "A powerful smartphone with the latest features.",
"price": 799.99,
"categories": ["electronics", "phone"],
"images_url": ["https://example.com/images/smartphone.jpg"]
}
{
"id": "64e7d9f4e8b1b6d9e0c77abc",
"name": "Smartphone",
"description": "A powerful smartphone with the latest features.",
"price": 799.99,
"categories": ["electronics", "phone"],
"created_at": "2025-01-15T00:00:00Z",
"updated_at": "2025-01-15T00:00:00Z",
"is_deleted": false,
"images_url": ["https://example.com/images/smartphone.jpg"]
}