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