Esta API permite a las personas usuarias consultar, adquirir, modificar y eliminar skins para un videojuego. Está construida en Java Spring Boot y utiliza Swagger para la documentación. Los usuarios pueden interactuar con la API a través de Postman para probar sus funcionalidades.
- Requisitos
- Dependencias del Proyecto
- Modelo de Skin
- Configuración de la Base de Datos
- Rutas de la API
- Ejecución del Proyecto
- Documentación de Postman
- Documentación de Swagger
- Desafíos e Implementación
- Documentación en el Readme
Antes de utilizar esta API, asegúrate de cumplir con los siguientes requisitos:
- Java JDK 11.
- Maven instalado.
- MySQL configurado y accesible.
- spring-boot-starter-data-jpa
- spring-boot-starter-web
- springdoc-openapi-starter-webmvc-ui
- spring-boot-devtools
- mysql-connector-j
- spring-boot-starter-test
- jackson-databind
- swagger-annotations
La estructura de datos para representar las skins incluye los siguientes campos:
id
: Identificador único de la skin.name
: Nombre de la skin.type
: Tipo de skin.price
: Precio de la skin.color
: Color de la skin.description
: Descripción de la skin.
Esta API se conecta a una base de datos para almacenar las skins adquiridas por los usuarios. Yo he legido MySQL para la configuración. Para configurar la base de datos, asegúrate de que la conexión esté definida en application.properties
.
1- Asegurate de haber creado tu db schema previamente.
2- En tu IDE, en application properties, cambia la url que accede a la base de datos y añade tu username y tu password.
La API ofrece las siguientes rutas:
GET /skins/avaible
: Devuelve una lista de todas las skins disponibles para comprar. (Nota: el nombre "avaible" se mantiene según los requerimientos originales, aunque parece haber un error tipográfico en los requerimientos).POST /skins/buy
: Permite a los usuarios adquirir una skin y guardarla en la base de datos.GET /skins/myskins
: Devuelve una lista de las skins compradas por el usuario.PUT /skins/color
: Permite a los usuarios cambiar el color de una skin comprada.DELETE /skins/delete/{id}
: Permite a los usuarios eliminar una skin comprada.GET /skin/getskin/{id}
: Devuelve una determinada skin.
Sigue estos pasos para ejecutar el proyecto:
- Clona este repositorio en tu máquina local.
git clone https://github.com/tuusuario/tu-repo.git
cd tu-repo
mvn spring-boot:run
La aplicación se ejecutará en http://localhost:8080. Puedes acceder a la documentación de Swagger y probar la API o bien usar Postman tal y como indico a continuación.
Dispones de una colección de Postman que te permitirá probar las rutas de la API de forma sencilla. Sigue estos pasos para descargar e importar la colección en tu aplicación Postman:
-
Descarga la colección de Postman haciendo clic en el siguiente enlace:
-
Abre la aplicación Postman en tu computadora.
-
En la parte superior izquierda de la interfaz de Postman, haz clic en el botón "Import" para cargar la colección.
-
Selecciona el archivo descargado y confirma la importación.
-
Una vez importada la colección, verás un conjunto de peticiones preparadas para probar todas las rutas de la API.
-
Asegúrate de que el servidor de tu aplicación Spring Boot esté en ejecución.
-
Haz clic en cada solicitud en la colección y ajusta los parámetros según sea necesario.
-
Ejecuta las solicitudes para interactuar con la API y verificar su funcionamiento.
Esta colección de Postman te facilitará la interacción y prueba de la API de Skins para Videojuegos.
Puedes acceder a la documentación de la API y probar sus rutas utilizando Swagger. Para acceder a la documentación, ejecuta el proyecto y visita la siguiente URL en tu navegador:
http://localhost:8080/swagger-ui.html
Swagger proporciona una interfaz interactiva para explorar y probar todas las funcionalidades de la API.
El modelo de Skin se define en el paquete com.roberv.skin.models. Hemos enfrentado el desafío de diseñar una estructura de datos que contemple campos como id, nombre, tipo, precio, color y descripción., garantizando que esta estructura sea eficiente y escalable.
Uno de los desafíos clave fue cargar las skins disponibles desde un archivo JSON. Para resolverlo, hemos utilizado la biblioteca Jackson para mapear los datos del archivo a objetos Java. Esto permite a la aplicación acceder a las skins disponibles de manera eficiente.
Conectar la aplicación a una base de datos (MySQL) planteó el desafío de establecer la configuración y la integración adecuadas. Hemos optado por utilizar el repositorio SkinRepository para interactuar con la base de datos, permitiendo así la persistencia y recuperación de datos relacionados con las skins.
Para manejar excepciones de manera efectiva, hemos implementado excepciones personalizadas, como SkinNotFoundException, SkinPurchaseException y EmptyColorException. Cada excepción se lanza en situaciones específicas, permitiendo una gestión de errores más precisa y significativa. Esta personalización de excepciones es especialmente útil para proporcionar mensajes de error claros y detallados a los usuarios y desarrolladores.
La creación de rutas de la API en el controlador SkinController fue un paso fundamental en el cumplimiento de los requisitos. Cada ruta cumple con una función específica, como obtener skins disponibles, permitir a los usuarios comprar skins, listar las skins del usuario y más.
Uno de los aspectos clave de la implementación es el uso del patrón Builder en el SkinDTO. Esto resuelve el desafío de construir objetos complejos, ya que permite configurar un objeto DTO de manera más legible y mantenerlo inmutable. El patrón Builder se utiliza en la creación de objetos SkinDTO, proporcionando una forma clara y eficiente de construir instancias de DTO con varios campos. Esto contribuye a que la aplicación sea escalable y a la vez garantiza una estructura de datos eficiente en las respuestas API.
El archivo README del repositorio contiene documentación detallada que describe cómo se han cumplido los requisitos específicos de la prueba técnica. También proporciona una guía para ejecutar la aplicación localmente, lo que facilita la comprensión y el uso de la aplicación.
Desarrollado por Roberto Vetere Contacto: roberto.vetere@gmail.com | Teléfono: +34 615-605-208