Estructura general de la API
La API está desarrollada en Kotlin utilizando el framework Spring Boot, y sigue una arquitectura en capas que permite separar responsabilidades y facilitar el mantenimiento, escalabilidad y reutilización del código. Además, se utilizan buenas prácticas como inyección de dependencias, validación de datos y seguridad basada en filtros.
Tecnologías principales
Spring Boot: framework principal para construcción de servicios REST.
Spring Security: gestión de autenticación, autorización y filtros de seguridad.
Firebase Admin SDK: para validar tokens de Firebase al iniciar sesión.
JWT (JSON Web Tokens): para representar sesiones del usuario de forma segura.
Base de datos MySQL: persistencia de usuarios, tokens, rutas, vehículos, imagenes, etc.
JPA/Hibernate: acceso a datos y mapeo objeto-relacional.
Estructura por capas
La lógica de la API está organizada en diferentes capas:
Controller: expone los endpoints REST y recibe las solicitudes del cliente.
Service: contiene la lógica de negocio principal (validaciones, procesamiento, generación de tokens...).
Repository: se encarga del acceso a la base de datos mediante interfaces JPA.
Modelos (Entity/DTO): representan las entidades de la base de datos y los objetos de intercambio entre las diferentes capas y con el cliente.
Endpoints principales
La API incluye múltiples módulos funcionales con sus propios endpoints, que explcian con mas profundidad mas adelante:
Autenticación: login, registro, refresh de sesión, validación de token.
Usuarios: obtención y edición de perfil, imagen, suscripción premium.
Vehículos: inicialización, obtención y edición de vehículos según tipo.
Rutas: creación, visualización, edición y eliminación de rutas.
Imágenes de ruta y perfil: subida, obtención y eliminación.
Pines de ruta: gestión de puntos geolocalizados dentro de rutas.
Consideraciones generales
La API es RESTful y devuelve datos en formato JSON.
Todas las rutas protegidas son stateless (no hay sesiones en el servidor).
La validación de datos y errores se maneja mediante excepciones y respuestas HTTP claras.
Última actualización