Desarrollo de una aplicación de Android para acceder a un catálogo y carrito de productos, basado en la app web RESTful de la práctica 1.
| Nombre | Usuario |
|---|---|
| Marina Jun Carranza Sánchez | marinajcs |
| Mario Martínez Sánchez | martinezmario02 |
Para ejecutar la aplicación Android (carpeta /app), se usará un emulador en Android Studio.
Para ello, primero se abre el gestor de dispositivos y se configura un emulador (se ha usado en
el desarrollo un Galaxy Nexus con API 33) si no se tiene ya creado. Después, se inicia el emulador,
y se ejecuta la aplicación, haciendo click el botón Run 'MainActivity' (Mayús+F10), que la compilará
y ejecutará.
Esto permitirá instalar la app en el emulador, y hacer que se abra directamente, permitiendo interactuar con ella y realizar pruebas en el entorno simulado.
-
com.squareup.okhttp3:logging-interceptor:4.11.0: permite registrar las solicitudes y respuestas HTTP para depuración de las interacciones con la API. -
com.squareup.okhttp3:okhttp:4.11.0: Biblioteca HTTP para realizar solicitudes a servidores, utilizada para la comunicación con APIs. -
com.squareup.retrofit2:retrofit:2.9.0: Framework para simplificar las solicitudes HTTP al crear una interfaz para consumir APIs RESTful. -
com.squareup.retrofit2:converter-gson:2.9.0: Conversor que integra Retrofit con Gson para serializar y deserializar JSON automáticamente. -
com.google.code.gson:gson:2.8.8: Biblioteca para manejar JSON, útil para convertir objetos de Java a JSON y viceversa. -
androidx.appcompat:appcompat:1.3.1: Proporciona compatibilidad hacia atrás para funciones modernas de UI en versiones antiguas de Android. -
androidx.core:core-ktx:1.7.0: Extensiones para facilitar el desarrollo en Kotlin al interactuar con el framework de Android. -
androidx.recyclerview:recyclerview:1.2.1: Componente UI para mostrar listas y rejillas de productos en el catálogo o carrito de manera eficiente. -
org.osmdroid:osmdroid-android:6.1.14: Biblioteca de mapas para mostrar ubicaciones de tiendas o puntos de interés relacionados con el catálogo o carrito.
Los ficheros más importantes son el AndroidManifest.xml, el MainActivity.kt, las clases adaptadores
y los layout para las vistas.
Se han declarado los endpoints en tres Rest Controllers distintos, cada uno asociado a una funcionalidad de la app concreta:
-
GET /api/cart: devuelve todos los productos en el carrito del usuario autenticado con sus respectivas cantidades. -
GET /api/cart/total: calcula y devuelve el precio total de los productos en el carrito del usuario autenticado. -
POST /api/cart/add: añade un producto al carrito del usuario autenticado especificando su productId. -
POST /api/cart/delete: elimina un producto específico del carrito del usuario autenticado usando su productId. -
GET /api/cart/bill: genera y descarga una factura PDF de los productos del carrito del usuario autenticado, y limpia el carrito.
-
POST /api/auth/login: permite al usuario iniciar sesión proporcionando username y password. Devuelve un mensaje y el rol del usuario en caso de éxito, o un error en caso de credenciales inválidas. -
POST /api/auth/logout: cierra la sesión del usuario, limpia el contexto de seguridad y finaliza la sesión HTTP.
-
GET /api/products: devuelve una lista de todos los productos disponibles. -
POST /api/products/add: añade un nuevo producto especificando su name y price. -
POST /api/products/edit: edita un producto existente identificándolo por su productId y actualizando su name y price. -
POST /api/products/delete: elimina un producto específico usando su productId. -
GET /api/products/databaseExport: exporta la base de datos a un archivo SQL descargable.
En la carpeta /docs se encuentra la documentación técnica, el manual de usuario y las pruebas realizadas.