Esta aplicación es un sistema de gestión de carritos de compra que permite a los usuarios crear y manejar carritos, así como agregar y eliminar productos. Además, permite gestionar la información de los productos disponibles para la compra. La aplicación proporciona una interfaz RESTful que facilita las operaciones relacionadas con carritos y productos, permitiendo una integración sencilla con otros sistemas y aplicaciones front-end.
Se aconseja utilizar una versión estable de Apache NetBeans o cualquier otro IDE estable, también se puede utilizar Eclipse. La aplicación corre en http://localhost:8080.
-
Abrir el Proyecto:
- Abre NetBeans.
- Ve a
File
>Open Project
. - Navega hasta la carpeta del proyecto Spring Boot que deseas abrir y selecciona la carpeta del proyecto (debería contener el archivo
pom.xml
). - Haz clic en
Open Project
.
-
Ejecutar la Aplicación:
- Antes de ejecutar el proyecto, instala las dependencias necesarias con un clic derecho sobre el proyecto y apretando
Clean and Build
. - Busca la clase principal que contiene el método
main
. Haz clic derecho en la clase principal y seleccionaRun File
o usa el atajoShift + F6
. - Alternativamente, puedes ejecutar el proyecto completo haciendo clic derecho en el proyecto en el panel de proyectos y seleccionando
Run
.
- Antes de ejecutar el proyecto, instala las dependencias necesarias con un clic derecho sobre el proyecto y apretando
-
Importar el Proyecto:
- Abre Eclipse.
- Ve a
File
>Import
. - Selecciona
Existing Maven Projects
y haz clic enNext
. - Navega hasta la carpeta del proyecto Spring Boot que deseas abrir y selecciona la carpeta (debería contener el archivo
pom.xml
). - Haz clic en
Finish
.
-
Ejecutar la Aplicación:
- Busca la clase principal que contiene el método
main
. - Haz clic derecho en la clase y selecciona
Run As
>Java Application
. - También puedes ejecutar el proyecto completo haciendo clic derecho en el proyecto en el panel de
Package Explorer
y seleccionandoRun As
>Maven install
oMaven build
.
- Busca la clase principal que contiene el método
El proyecto posee una base de datos H2 en memoria (jdbc:h2:mem:testdb
). Esto significa que no está almacenada en disco: la base de datos existe solo en la memoria mientras la aplicación se está ejecutando. Cuando la aplicación Spring Boot se detiene, toda la información en la base de datos se pierde.
Para acceder a la base de datos de la aplicación, dirígete a http://localhost:8080/h2-console/login.jsp.
- Setting Name: Generic H2 (Embedded)
- Driver Class: org.h2.Driver
- JDBC URL: jdbc:h2:mem:testdb
- User Name: sa
- Password: (vacía, sin contraseña)
En la base de datos verás las siguientes tablas: CARRITO, CARRITO_PRODUCTOS y PRODUCT.
Todos los endpoints se encuentran documentados en la API de Postman y se pueden ver en detalle en el siguiente enlace: Documentación Postman.
También se encuentran en Swagger, una vez ejecutado el backend, en el siguiente enlace: Swagger UI.
-
GET /carritos/traer
- Descripción: Obtiene todos los carritos de compra existentes.
- Respuesta: Devuelve una lista de carritos.
-
GET /carritos/traer/{id}
- Descripción: Busca un carrito específico por su ID.
- Respuesta: Devuelve el carrito encontrado o un mensaje de error si no existe.
-
POST /carritos/guardar
- Descripción: Crea un nuevo carrito con los detalles proporcionados.
- Respuesta: Devuelve un mensaje de éxito y el ID del carrito creado.
-
PUT /carritos/modificar
- Descripción: Modifica los detalles de un carrito existente.
- Respuesta: Devuelve un mensaje de éxito y el ID del carrito modificado.
-
DELETE /carritos/eliminar/{id}
- Descripción: Elimina un carrito específico por su ID.
- Respuesta: Devuelve un mensaje de éxito o un mensaje de error si el carrito no existe.
-
GET /detalles/carrito/{id}
- Descripción: Obtiene los productos asociados a un carrito específico.
- Respuesta: Devuelve la lista de productos o un mensaje si el carrito no existe.
-
POST /detalles/guardar
- Descripción: Agrega un producto a un carrito existente.
- Respuesta: Devuelve un mensaje de éxito o un error si el carrito o el producto no existen.
-
POST /detalles/cerrar
- Descripción: Cierra un carrito, cambiando su estado a cerrado.
- Respuesta: Devuelve un mensaje de éxito o un error si el carrito no existe.
-
DELETE /detalles/eliminar
- Descripción: Elimina un producto de un carrito específico.
- Respuesta: Devuelve un mensaje de éxito o un error si el carrito o el producto no existen.
-
GET /productos/traer
- Descripción: Obtiene todos los productos disponibles.
- Respuesta: Devuelve una lista de productos.
-
GET /productos/traer/{id}
- Descripción: Busca un producto específico por su ID.
- Respuesta: Devuelve el producto encontrado o un mensaje de error si no existe.
-
POST /productos/crear
- Descripción: Crea un nuevo producto con los detalles proporcionados.
- Respuesta: Devuelve un mensaje de éxito y los detalles del producto creado.
-
PUT /productos/editar
- Descripción: Modifica los detalles de un producto existente.
- Respuesta: Devuelve un mensaje de éxito y los detalles del producto modificado.
-
DELETE /productos/eliminar/{id}
- Descripción: Elimina un producto específico por su ID.
- Respuesta: Devuelve un mensaje de éxito o un mensaje de error si el producto no existe.
Los test se encuentran en la carpeta Test, donde se testean dos controladores:
- CarritoController: se prueba traer un carrito por ID y simular un bad request.
- ProductoController: donde se intenta crear un producto nuevo y simular un bad request.