5. API Backend - dblancou/AppLetterboxdProyectoFinalAndroid GitHub Wiki

La aplicación se comunica con una API que sirve como backend para gestionar y proporcionar datos sobre las películas. El repositorio de la API se encuentra en el siguiente enlace: API Letterboxd Proyecto Final.

Descripción General

La API está desarrollada en Java utilizando el framework Spring Boot, lo que garantiza una estructura robusta y escalable. Implementa Spring Security para la gestión de la seguridad, proporcionando autenticación y autorización para proteger los endpoints de la API.

Funcionalidades de la API

  • Gestión de Películas: CRUD completo para las películas, incluyendo búsqueda por título y filtrado por género.
  • Gestión de Reviews: Permite a los usuarios crear, leer, actualizar y eliminar reviews de películas.
  • Gestión de Listas de Películas: Los usuarios pueden crear y gestionar listas de películas, categorizadas por diferentes criterios.
  • Gestión de Usuarios: Registro y autenticación de usuarios, gestión de perfiles de usuario.
  • Gestión de Géneros: CRUD para los diferentes géneros de películas.

Capas del Proyecto

1. Capa de Controladores (Controllers)

La capa de controladores maneja las solicitudes HTTP entrantes y las dirige a los servicios adecuados. Los controladores están diseñados para recibir las peticiones del cliente, procesar los datos de entrada, invocar los servicios correspondientes y devolver las respuestas adecuadas.

  • Controlador de Películas: Maneja las solicitudes relacionadas con las operaciones de películas.
  • Controlador de Reviews: Gestiona las solicitudes para crear, leer, actualizar y eliminar reviews.
  • Controlador de Listas de Películas: Controla las operaciones sobre las listas de películas de los usuarios.
  • Controlador de Usuarios: Maneja el registro y la autenticación de usuarios.

2. Capa de Servicios (Services)

La capa de servicios contiene la lógica de negocio de la aplicación. Esta capa se encarga de procesar los datos recibidos de los controladores, aplicar las reglas de negocio y coordinar las operaciones entre la capa de controladores y la capa de persistencia.

  • Servicio de Películas: Implementa la lógica de negocio para gestionar las películas.
  • Servicio de Reviews: Contiene la lógica para las operaciones de reviews.
  • Servicio de Listas de Películas: Gestiona las operaciones relacionadas con las listas de películas de los usuarios.
  • Servicio de Usuarios: Maneja la lógica de negocio para la gestión de usuarios.

3. Capa de Repositorios (Repositories)

La capa de repositorios se encarga de la interacción con la base de datos. Utiliza JPA (Java Persistence API) para realizar operaciones CRUD y otras consultas específicas en la base de datos MySQL.

  • Repositorio de Películas: Define las operaciones de acceso a datos para las películas.
  • Repositorio de Reviews: Maneja las operaciones de acceso a datos para las reviews.
  • Repositorio de Listas de Películas: Gestiona las operaciones de acceso a datos para las listas de películas.
  • Repositorio de Usuarios: Gestiona las operaciones de acceso a datos para los usuarios.

4. Capa de Entidades (Entities)

La capa de entidades define las estructuras de datos que se almacenan en la base de datos. Cada entidad corresponde a una tabla en la base de datos y está mapeada utilizando anotaciones de JPA.

  • Entidad Película: Representa la tabla de películas en la base de datos.
  • Entidad Review: Representa la tabla de reviews en la base de datos.
  • Entidad Lista de Películas: Representa la tabla de listas de películas en la base de datos.
  • Entidad Usuario: Representa la tabla de usuarios en la base de datos.
  • Entidad Género: Representa la tabla de géneros en la base de datos.

5. Capa de Configuración (Configuration)

Esta capa contiene las configuraciones necesarias para la aplicación, incluyendo la configuración de la base de datos, la seguridad y otros aspectos relevantes del entorno de ejecución.

  • Configuración de la Base de Datos: Define la conexión a la base de datos MySQL.
  • Configuración de Seguridad: Maneja la seguridad de la API, incluyendo la autenticación y autorización, utilizando Spring Security.

Exposición a través de diagramas

Diagrama Entidad-Relación (ER)

El diagrama Entidad-Relación (ER) proporciona una visión clara de cómo están estructurados los datos en la base de datos y cómo se relacionan entre sí.

Diagrama ER

Diagrama de Casos de Uso

El diagrama de casos de uso ilustra las diferentes interacciones entre los usuarios y la API, describiendo las principales funcionalidades que ofrece la API.

Diagrama de Casos de Uso

Diagrama de Componentes

El diagrama de componentes proporciona una visión de alto nivel de la arquitectura de la aplicación, mostrando cómo los diferentes componentes del sistema interactúan entre sí.

Diagrama de Componentes

Enlaces Útiles