Documentación del microservicio Catálogo¶
Descripción¶
Microservicio Spring Boot encargado de gestionar el catálogo de videos y categorías de la plataforma. Proporciona una API REST para el almacenamiento, consulta y administración de metadatos de videos y sus clasificaciones por categorías.
Responsabilidades¶
- Gestionar el catálogo completo de videos
- Administrar categorías de contenido
- Proporcionar búsqueda y filtrado de videos
- Gestionar metadatos de videos (título, descripción, miniaturas)
- Controlar la visibilidad de contenido (videos ocultos)
- Autenticar y autorizar operaciones mediante JWT
Interacción¶
Este componente interactúa con: + Administrador de Contenidos (Admin App) + Reproductor de Videos (Video Player) + Servidor HLS de Videos + Gestor de Suscripciones
Endpoints¶
Endpoints GET - Videos¶
GET /api/catalogo?page={int}&size={int}: Obtiene el catálogo paginado de videos públicosGET /api/catalogo/{id}: Obtiene un video específico por su IDGET /api/catalogo?categoriaId={int}&page={int}&size={int}: Obtiene videos de una categoría específicaGET /api/catalogo/search?titulo={titulo}&page={int}&size={int}: Busca videos por título , paginado
Endpoints GET - Categorías¶
GET /api/categorias: Obtiene todas las categorías disponiblesGET /api/categorias/{id}: Obtiene una categoría específica por su ID
Endpoints POST¶
POST /api/catalogo/videos: Crea un nuevo video en el catálogo (requiere autenticación de administrador)POST /api/categorias: Crea una nueva categoría (requiere autenticación de administrador)
Endpoints PUT¶
PUT /api/catalogo/videos/{id}: Actualiza los datos de un video existente (requiere autenticación de administrador)PUT /api/categorias/{id}: Actualiza una categoría existente (requiere autenticación de administrador)
Endpoints DELETE¶
Delete videos no se usa porque en su lugar se maneja un campo is_hidden para ocultar videos sin eliminarlos físicamente.
DELETE /api/catalogo/videos/{id}: Elimina un video del catálogo (requiere autenticación de administrador)DELETE /api/categorias/{id}: Elimina una categoría (requiere autenticación de administrador)
Casos de uso¶
Diagrama Entidad-Relación¶
Modelo de datos¶
Video¶
Representa un video en el catálogo con sus metadatos de negocio.
Campos:
- id: Identificador único del video
- creator: Usuario o entidad que creó el video
- title: Título del video
- description: Descripción detallada del contenido
- duration_seconds: Duración del video en segundos
- url_video: URL del archivo de video procesado (HLS)
- url_thumbnail: URL de la miniatura/thumbnail del video
- upload_date: Fecha y hora de subida
- is_hidden: Indica si el video está oculto o visible públicamente
Categoria¶
Agrupa videos por temática o tipo de contenido.
Campos:
- id: Identificador único de la categoría
- name: Nombre de la categoría
- description: Descripción de la categoría
Video_Categoria¶
Tabla de relación muchos-a-muchos entre videos y categorías.
Campos:
- video_id: Referencia al video
- categoria_id: Referencia a la categoría
Diagramas de flujo¶
Consultar catálogo de videos¶
Buscar videos por categoría¶
Crear nuevo video¶
Modificar video existente¶
Eliminar video¶
Gestión de categorías¶
Arquitectura y Tecnologías¶
Stack Tecnológico¶
- Framework: Spring Boot 3.x
- Lenguaje: Java 17+
- Base de Datos: MySQL/PostgreSQL (JPA/Hibernate)
- Seguridad: Spring Security con JWT
- API: RESTful API con Jackson
- Build: Maven
Componentes principales¶
Controllers¶
VideoController: Gestiona endpoints de videosCategoriaController: Gestiona endpoints de categorías
Services¶
VideoService: Lógica de negocio para videosCategoriaService: Lógica de negocio para categorías
Repositories¶
VideoRepository: Acceso a datos de videos (Spring Data JPA)CategoriaRepository: Acceso a datos de categorías (Spring Data JPA)
Security¶
JwtAuthenticationFilter: Filtro de autenticación JWTJwtTokenProvider: Generación y validación de tokensSecurityConfig: Configuración de seguridadCorsConfig: Configuración de CORS
DTOs¶
- Public DTOs: Información expuesta a usuarios no autenticados
- Private DTOs: Información completa para administradores
- Post DTOs: Datos para creación/actualización de recursos






