La API de contenidos es una interfaz que permite la gestión y acceso a los contenidos multimedia disponibles en la plataforma de tipo Netflix. A través de esta API, los usuarios pueden interactuar con una amplia variedad de contenido, incluyendo películas, series, documentales y otros formatos, permitiéndoles consumir estos elementos dentro de la aplicación.
El objetivo principal de esta API es garantizar una entrega eficiente y escalable de contenido a los usuarios, mientras mantiene la flexibilidad necesaria para adaptarse a nuevas funcionalidades o cambios en los requerimientos de negocio.
-
Obtener lista de contenidos
GET /contenido: Recupera todos los contenidos multimedia. -
Añadir nuevo contenido
POST /contenido: Crea un nuevo contenido multimedia. -
Buscar por género
GET /contenido/findByGenero/{genero}: Filtra contenidos por género. -
Buscar por tipo
GET /contenido/findByTipo/{tipo}: Filtra contenidos por tipo (serie, película, etc.). -
Buscar por título
GET /contenido/findByTitulo/{titulo}: Busca contenidos por título. -
Obtener contenido por ID
GET /contenido/{idContenido}: Obtiene un contenido específico por ID. -
Actualizar contenido
PUT /contenido/{idContenido}: Actualiza un contenido por ID. -
Eliminar contenido
DELETE /contenido/{idContenido}: Elimina un contenido por ID. -
Obtener temporadas de una serie
GET /contenido/{idContenido}/Temporadas: Lista las temporadas de una serie. -
Añadir temporada a una serie
POST /contenido/{idContenido}/Temporadas: Añade una temporada a una serie. -
Obtener episodios de una temporada
GET /contenido/{idContenido}/{numeroTemporada}/ListaEpisodios: Lista los episodios de una temporada.
-
Obtener lista de contenidos
GET /contenido: Recupera todos los contenidos multimedia. -
Añadir nuevo contenido
POST /contenido: Crea un nuevo contenido multimedia. -
Buscar por género
GET /contenido/findByGenero/{genero}: Filtra contenidos por género. -
Buscar por tipo
GET /contenido/findByTipo/{tipo}: Filtra contenidos por tipo (serie, película, etc.). -
Buscar por título
GET /contenido/findByTitulo/{titulo}: Busca contenidos por título. -
Obtener contenido por ID
GET /contenido/{idContenido}: Obtiene un contenido específico por ID. -
Actualizar contenido
PUT /contenido/{idContenido}: Actualiza un contenido por ID. -
Eliminar contenido
DELETE /contenido/{idContenido}: Elimina un contenido por ID. -
Obtener temporadas de una serie
GET /contenido/{idContenido}/Temporadas: Lista las temporadas de una serie. -
Añadir temporada a una serie
POST /contenido/{idContenido}/Temporadas: Añade una temporada a una serie. -
Obtener episodios de una temporada
GET /contenido/{idContenido}/{numeroTemporada}/ListaEpisodios: Lista los episodios de una temporada.
-
Se utilizó PostgreSQL como base de datos SQL para almacenar y gestionar los datos de la API.
-
Postman se utilizó para realizar pruebas de los endpoints de la API, asegurando que todas las solicitudes y respuestas fueran correctas.
-
GitHub Actions se configuró para automatizar el proceso de integración continua, ejecutando pruebas y despliegues cada vez que se realizaba un push al repositorio.
-
Swagger se usó para definir la arquitectura de la API, incluyendo los endpoints del microservicio. Esto proporcionó una documentación interactiva y permitió probar la API directamente desde la interfaz.
-
OpenAPI Generator se empleó para generar el esqueleto del código de la API, lo que permitió comenzar rápidamente con una estructura base para los endpoints definidos en el archivo Swagger.
-
El desarrollo se realizó en Python, utilizando el framework Flask para construir la API. Flask es ligero, fácil de usar y perfecto para construir microservicios.
-
Docker se utilizó para crear contenedores tanto para la API como para la base de datos, permitiendo simular un entorno de despliegue real. Esto garantizó que la API funcionara correctamente tanto en desarrollo como en pruebas, aislando el entorno de ejecución.
-
Se utilizó una arquitectura modular, separando el código en diferentes paquetes y clases. Esto permitió un orden claro y mantenible en el código. La separación en paquetes facilita el desarrollo y la extensión del sistema sin que otras partes se vean afectadas, favoreciendo la escalabilidad del proyecto.
-
Se utilizaron las siguientes librerías:
Flask-SQLAlchem: Para la integración con la base de datos PostgreSQL, gestionando las operaciones CRUD.
Flask-CORS: Para habilitar el soporte de CORS, permitiendo que la API sea accesible desde diferentes dominios.
Python 3.5.2+
- Instalación:
- Asegúrate de tener Python 3.5.2 o superior instalado en tu máquina.
- Configuración del entorno
- Asegúrate de tener PostgreSQL corriendo y configurado en tu entorno local o usa un servicio en la nube .
- Nombra tu base de datos como Contenidos
- Para inicializar las tablas la base de datos y el contenido de esta, asegúrate de ejecutar las query definidas en el archivo Init.sql para crear las tablas y estructuras necesaria
- Para ejecutar la Api Contenidos , ejecute lo siguiente desde el directorio raíz
- Instale los requerimientos
pip3 install -r requirements.txt pip3 install -r requeriments_sqlalchemy.txt - Ejecute la Api con el siguiente Comando
python3 -m openapi_server - La Api debe estarse ejecutando
- Definición de OpenAPI
- La Api debe estarse ejecutando
- Definición de OpenAPI
Abre tu navegador y accede a la siguiente URL para ver la interfaz de usuario de la API: Abre tu navegador y accede a la siguiente URL para ver la interfaz de usuario de la API:
http://localhost:8080/ui/
La definición de OpenAPI está disponible en formato JSON en: La definición de OpenAPI está disponible en formato JSON en:
http://localhost:8080/openapi.json
<<<<<<< HEAD
=======
e68888314e2c7421e11d3afbabcab98b9d51572c
Este documento describe los pasos necesarios para desplegar una API dentro de un contenedor Docker utilizando docker-compose.
- Docker: Asegúrate de tener instalado Docker en tu sistema. Puedes descargarlo desde Docker.
- docker-compose: Comprueba que tienes instalado
docker-compose. Si no, sigue las instrucciones de instalación aquí.
Antes de desplegar la API, necesitas crear una red específica para el proyecto. Esto permitirá que los contenedores se comuniquen entre sí.
Ejecuta el siguiente comando en la terminal:
docker network create flask_networkPara construir la imagen de Docker y poner en marcha los contenedores, sigue los pasos a continuación:
Desde el directorio donde se encuentra el archivo docker-compose.yml, ejecuta el siguiente comando para construir las imágenes y levantar los contenedores:
docker-compose up --buildUna vez que los contenedores estén en funcionamiento, puedes verificar el estado de los servicios con el siguiente comando:
docker psTu API ahora está en funcionamiento dentro de un contenedor Docker, junto con su base de datos y otros servicios asociados.