API RESTful con Python
INTEGRANTES:
Omar Hernandez
Roberto Huerta
Rodrigo Saldaña
Raul Saldaña
Alejo Jasso
Ana Pau Zapata
Programación y arquitectura de aplicaciones
Lineamientos del proyecto
Alcance
Este proyecto marca el inicio del desarrollo de una aplicación web innovadora,
diseñada para satisfacer necesidades específicas de los usuarios en diversos
ámbitos de entretenimiento, cultura y negocios. La plataforma facilitará la
búsqueda y descubrimiento de eventos como conciertos, exhibiciones
culturales, proyecciones cinematográficas, competencias deportivas,
conferencias empresariales, así como el acceso a catálogos digitales
especializados en música, negocios y otros sectores de interés.
El desarrollo de esta aplicación se llevará a cabo a lo largo de tres asignaturas
consecutivas en la línea de tecnología digital.
Cada una de estas materias contribuirá de manera significativa a la
evolución y perfeccionamiento del proyecto, culminando en una solución
integral y funcional que no sólo enriquecerá la experiencia de los
usuarios en el ámbito cultural y de entretenimiento, sino que también
proporcionará herramientas valiosas para profesionales y
emprendedores en el mundo de los negocios.
Página 2 de 7 © Escuela Bancaria y Comercial, S.C.
Programación y arquitectura de aplicaciones
Finalidad
Desarrollar una API RESTful en Python, utilizando Django Rest Framework y
MongoDB.
Instrucciones:
1. El proyecto lo realizarás en equipo de acuerdo con las instrucciones de
tu docente/asesor.
2. La ruta sugerida para elaborar el proyecto es la siguiente:
1. Fase 1: Unidad 2.
2. Fase 2: Unidad 4.
3. Fase 3: Unidad 5.
4. Entrega del proyecto: Unidad 5.
3. Características de la entrega:
a. Informe ejecutivo, que contemple las correcciones de cada una de las fases
sugeridas por su docente, con base en los siguientes lineamientos:
Formato de procesador de texto Word o PDF.
Portada:
− Escudo EBC.
− Nombre del docente, de la asignatura y de los integrantes del
equipo.
Tipografía Arial 12; interlineado 1.5.
Incluir fuentes de consulta en formato APA.
Anexar procedimientos, gráficas u otros apoyos que sustenten las fases
del
proyecto.
Fase 1 - Investigación preliminar
1. Realicen una investigación, en fuentes confiables, sobre las API RESTful,
sus características, ventajas y uso real en el desarrollo web.
2. Investiguen y recopilen información de por lo menos 5 API’s de uso
público.
a. Respondan:
•••
¿Cuál es el propósito de cada una? ¿Qué información permiten consultar? ¿Qué
tipo de aplicaciones las utilizan?
1. ¿Qué es una API RESTful?
Una API RESTful (Representational State Transfer) es un estilo de arquitectura para el
desarrollo de servicios web que permite la comunicación entre aplicaciones mediante el
protocolo HTTP. REST se basa en el uso de recursos identificados por URLs y en métodos
estándar como GET, POST, PUT y DELETE.
En una API RESTful, cada recurso (por ejemplo, una película o una serie) tiene una
dirección específica y puede ser consultado o modificado mediante peticiones HTTP.
Generalmente, las respuestas se devuelven en formato JSON, lo que facilita su lectura e
integración en aplicaciones web y móviles.
Características principales
● Uso de URLs claras para acceder a recursos (ejemplo: /api/peliculas).
● Utilización de métodos HTTP estándar:
GET: Obtener información.
POST: Crear un nuevo recurso.
PUT: Actualizar información existente. DELETE: Eliminar un recurso.
● Arquitectura sin estado : cada solicitud es independiente.
● Respuestas comúnmente en formato JSON.
● Separación entre cliente (frontend) y servidor (backend).
Ejemplo práctico
GET /api/peliculas/15
Devuelve la información de la película con ID 15.
POST /api/resenas
Permite agregar una nueva reseña.
PUT /api/peliculas/15
Actualiza los datos de la película.
Ventajas
● Facilidad de integración entre sistemas.
● Escalabilidad para manejar múltiples solicitudes.
● Estándar ampliamente adoptado en el desarrollo web.
● Compatible con aplicaciones móviles, web y sistemas backend.
● Permite la reutilización de servicios.
Desafíos
● Implementación de mecanismos de seguridad.
● Control de versiones de la API.
● Manejo de grandes volúmenes de datos.
● Limitación de solicitudes.
● Manejo adecuado de errores y códigos de estado HTTP.
Casos de uso en películas y series
● Sitios web con catálogos de películas.
● Aplicaciones de streaming.
● Sistemas de recomendación personalizada.
● Bots que responden información sobre películas.
● Integradores de reseñas y calificaciones.
2. Investigación de 5 API públicas de películas y series
1. The Movie Database
Propósito:
Proveer información completa sobre películas, series, actores y producciones audiovisuales.
Información que permite consultar:
● Listas de películas por popularidad.
● Detalles como sinopsis, imágenes y trailers.
● Información de actores y equipo de producción.
● Géneros y calificaciones.
Aplicaciones que la utilizan:
● Aplicaciones móviles de catálogo.
● Plataformas de recomendación.
● Sitios web informativos.
Sitio oficial: [Link]
2. Open Movie Database (OMDb)
Propósito:
Proporcionar información gratuita (mediante clave API) sobre películas y series.
Información que permite consultar:
● Año de estreno.
● Género.
● Director y reparto.
● Calificaciones de IMDb, Rotten Tomatoes y Metacritic.
● Posters.
Aplicaciones que la utilizan:
● Aplicaciones de reseñas.
● Buscadores por título.
● Bots informativos.
Sitio oficial: [Link] 3. Utelly API
Propósito:
Indicar en qué plataformas de streaming se encuentra disponible una película o serie.
Información que permite consultar:
● Servicios de streaming disponibles.
● País de disponibilidad.
● Enlaces directos a plataformas.
Aplicaciones que la utilizan:
● Comparadores de streaming.
● Apps de recomendación regional.
● Guías de entretenimiento.
Documentación: [Link] 4. TVmaze API
Propósito:
Ofrecer información detallada sobre series de televisión.
Información que permite consultar: ● Episodios.
● Temporadas.
● Fechas de estreno.
● Información del elenco.
Aplicaciones que la utilizan:
● Apps de seguimiento de series.
● Calendarios de estrenos.
● Sistemas de notificaciones de nuevos episodios.
Sitio oficial: [Link] 5. JustWatch API
Propósito:
Mostrar dónde ver películas y series según país y plataforma.
Información que permite consultar:
● Plataformas disponibles.
● Tipo de acceso (suscripción, renta o compra).
● Disponibilidad por región.
Aplicaciones que la utilizan:
● Comparadores de plataformas.
● Aplicaciones de guía de streaming.
● Sistemas de recomendación regional.
Sitio oficial: [Link]
3. API a desarrollar
API combinada (Catálogo + Disponibilidad + Reseñas) Características
● Consulta de títulos (películas y series).
● Filtros por género, popularidad y año.
● Información sobre disponibilidad en plataformas.
● Sistema CRUD de reseñas de usuarios.
● Posibilidad de integración con APIs externas.
Propósito
Crear una API integral que permita juntar información de entretenimiento en un solo
servicio, facilitando la integración en aplicaciones móviles y web.
4. Justificación de la elección ¿Por qué se eligió esta API?
Se eligió la API combinada porque tiene múltiples funcionalidades en un solo sistema.
Permite consultar datos generales, verificar disponibilidad en plataformas y agregar
interacción social mediante reseñas.
Esto la convierte en una solución más completa, innovadora y aplicable a escenarios reales.
Necesidad del mercado
Actualmente, el mercado del streaming ha crecido considerablemente. Los usuarios utilizan
múltiples plataformas (Netflix, Prime Video, Disney+, etc.), lo que dificulta saber dónde
está disponible un contenido específico.
Existe la necesidad de una herramienta que:
● Centralice información.
● Compare disponibilidad entre plataformas.
● Permita interacción social mediante reseñas.
● Facilite la toma de decisiones sobre qué ver.
Población meta
● Desarrolladores de aplicaciones de entretenimiento.
● Usuarios finales que buscan información confiable.
● Emprendedores digitales que desean integrar servicios de streaming.
Aplicaciones que podrían utilizarla
● Aplicaciones móviles de catálogo.
● Webs de recomendaciones personalizadas.
● Bots de chat informativos.
● Portales de reseñas.
● Integradores de servicios de streaming.
5. Conclusión
Las API RESTful representan una solución eficiente y escalable para el desarrollo de
aplicaciones modernas. En el ámbito del entretenimiento, permiten integrar información,
disponibilidad y reseñas en sistemas completos.
El desarrollo de una API combinada responde a una necesidad real del mercado actual,
facilitando la toma de decisiones y mejorando la experiencia del usuario en el consumo de
contenido audiovisual.
6. Referencias (Formato APA)
The Movie Database. (2024). TMDb API documentation.
[Link]
Open Movie Database. (2024). OMDb API documentation.
[Link] TVmaze. (2024).
TVmaze API [Link]://[Link]/api
Utelly. (2024). Utelly API documentation.
[Link] JustWatch. (2024).
JustWatch official website. [Link]
Página 3 de 7
© Escuela Bancaria y Comercial, S.C.
Programación y arquitectura de aplicaciones
3. Determinen qué API desarrollarás, a partir de la investigación previa y
considerando lo siguiente:
1. Describan qué tipo API's podrías crear.
2. Expliquen las características y propósito de las API ́s.
3. Comparen cada una de ellas.
4. Elijan aquella con la que realizarás tu proyecto final.
4. Explica:
1. ¿Por qué elegiste desarrollar esa API?
2. ¿Cuál es tu población meta?
3. ¿Qué necesidad satisface?
4. ¿Qué tipo de aplicaciones podrían utilizarla?
Avance
Documento de texto que contenga:
Investigación preliminar.
Elección y justificación de la aplicación a desarrollar.
Fase 2 - Diseño de la base de datos
1. Describan dentro de un archivo de texto las colecciones que tendrá tu
base de datos, con respecto a la investigación preliminar y a la elección
de la API a desarrollar.
2. Describan la estructura JSON de los documentos, al menos 15 para cada
colección dentro de un archivo de texto, para ello:
Codigo:
[
{ "id": 1, "name": "Inception", "description": "Un ladrón roba
secretos a
través de los sueños.", "author": "Christopher Nolan", "genre":
"Sci-Fi" },
{ "id": 2, "name": "Titanic", "description": "Historia de amor en
un barco que se hunde.", "author": "James Cameron", "genre":
"Romance" },
{ "id": 3, "name": "Gladiator", "description": "Un general
romano busca venganza.", "author": "Ridley Scott", "genre":
"Acción" },
{ "id": 4, "name": "The Matrix", "description": "Un hacker
descubre una realidad simulada.", "author": "Lana
Wachowski", "genre": "Sci-Fi" },
{ "id": 5, "name": "Interstellar", "description": "Viaje espacial
para salvar a la humanidad.", "author": "Christopher Nolan",
"genre": "Sci-Fi" },
{ "id": 6, "name": "Avatar", "description": "Un soldado explora
un mundo alienígena.", "author": "James Cameron", "genre":
"Sci-Fi" },
{ "id": 7, "name": "Joker", "description": "Origen de un villano
icónico.", "author": "Todd Phillips", "genre": "Drama" },
{ "id": 8, "name": "Avengers: Endgame", "description":
"Héroes intentan salvar el universo.", "author": "Anthony
Russo", "genre": "Acción" },
{ "id": 9, "name": "Coco", "description": "Un niño viaja al
mundo de los muertos.", "author": "Lee Unkrich", "genre":
"Animación" },
{ "id": 10, "name": "Frozen", "description": "Dos hermanas
enfrentan poderes mágicos.", "author": "Chris Buck", "genre":
"Animación" },
{ "id": 11, "name": "The Lion King", "description": "Un león
reclama su lugar como rey.", "author": "Roger Allers", "genre":
"Animación" },
{ "id": 12, "name": "Jurassic Park", "description": "Un parque
lleno de dinosaurios sale mal.", "author": "Steven Spielberg",
"genre": "Aventura" },
{ "id": 13, "name": "Spider-Man", "description": "Un joven
obtiene poderes arácnidos.", "author": "Sam Raimi", "genre":
"Acción" },
{ "id": 14, "name": "Harry Potter", "description": "Un mago
estudia en una escuela mágica.", "author": "Chris Columbus",
"genre": "Fantasía" },
{ "id": 15, "name": "Fast & Furious", "description": "Carreras
ilegales y acción extrema.", "author": "Rob Cohen", "genre":
"Acción" },
{ "id": 16, "name": "Breaking Bad", "description": "Un profesor
se vuelve narcotraficante.", "author": "Vince Gilligan",
"genre": "Drama" },
{ "id": 17, "name": "Stranger Things", "description": "Niños
enfrentan eventos sobrenaturales.", "author": "Duffer
Brothers", "genre": "Sci-Fi" },
{ "id": 18, "name": "Game of Thrones", "description":
"Familias luchan por el trono.", "author": "David Benioff",
"genre": "Fantasía" },
{ "id": 19, "name": "The Office", "description": "Vida diaria en
una oficina.", "author": "Greg Daniels", "genre": "Comedia" },
{ "id": 20, "name": "Friends", "description": "Grupo de amigos
en Nueva York.", "author": "David Crane", "genre":
"Comedia" },
{ "id": 21, "name": "The Witcher", "description": "Un cazador
de monstruos recorre el mundo.", "author": "Lauren Schmidt",
"genre": "Fantasía" },
{ "id": 22, "name": "Money Heist", "description": "El mayor
robo de la historia.", "author": "Álex Pina", "genre":
"Crimen" },
{ "id": 23, "name": "Dark", "description": "Viajes en el tiempo
afectan generaciones.", "author": "Baran bo Odar", "genre":
"Sci-Fi" },
{ "id": 24, "name": "Narcos", "description": "Historia del
narcotráfico en Colombia.", "author": "Carlo Bernard", "genre":
"Crimen" },
{ "id": 25, "name": "The Mandalorian", "description": "Un
cazarrecompensas en el espacio.", "author": "Jon Favreau",
"genre": "Sci-Fi" },
{ "id": 26, "name": "House of the Dragon", "description":
"Historia de la casa Targaryen.", "author": "Ryan Condal",
"genre": "Fantasía" },
{ "id": 27, "name": "Peaky Blinders", "description": "Una
familia criminal en Inglaterra.", "author": "Steven Knight",
"genre": "Drama" },
{ "id": 28, "name": "Black Mirror", "description": "Historias
sobre tecnología y sociedad.", "author": "Charlie Brooker",
"genre": "Sci-Fi" },
{ "id": 29, "name": "Loki", "description": "El dios del engaño
altera el tiempo.", "author": "Michael Waldron", "genre": "Sci-
Fi" },
{ "id": 30, "name": "Euphoria", "description": "Vida de
adolescentes y sus problemas.", "author": "Sam Levinson",
"genre": "Drama" }
]
a. Recuerden seguir la siguiente estructura para cada uno de los documentos:
Documento 1
{"campo":"valor", "campo":"valor", "campo":"valor"} Documento 2
{"campo":"valor", "campo":"valor", "campo":"valor"}
Página 4 de 7 © Escuela Bancaria y Comercial, S.C.
Programación y arquitectura de aplicaciones
3. Analicen la estructura de los documentos de tus colecciones y responde lo
siguiente: a. ¿Los datos son suficientes para que otras aplicaciones los puedan
utilizar?
Si tu respuesta es no, explica ¿por qué?
No, ya que la información es limitada y no incluye atributos importantes como año,
calificación, duración o número de temporadas. Además, no existe una diferenciación clara
entre películas y series, lo que dificulta su uso en otras aplicaciones. Para que sea funcional
en un entorno real, la base de datos debería ser más completa y estructurada.
Nota: Si consideran que hace falta incluir más campos en tus documentos,
realicen los ajustes necesarios.
Avance
Documento de texto que contenga:
Descripción de las colecciones y análisis de la información.
Estructura JSON de los registros de cada colección.
Análisis de la estructura de los documentos de tus colecciones.
Fase 3 - Desarrollo de la API RESTful
1. Desarrollen una base de datos en MongoDB con Compass.
2. Desarrollen un proyecto nuevo en Django y configura la conexión con tu
base de datos.
3. Utilicen Django Rest Framework para construir tu API.
4. Desarrollen los modelos, vistas y rutas, para ello,
a. Utiliza como referencia para los modelos, la descripción de la estructura
JSON de los documentos que elaboraste en la fase 2.
b. Ejecuta las migraciones de tus modelos desde Django Rest Framework para
generar las colecciones de manera automática en tu base de datos.
from [Link] import models
class Movie([Link]):
name = [Link](max_length=150)
description = [Link](max_length=150, null=True, blank=True) #
Allow
null values and blank values
author = [Link](max_length=200, null=True, blank=True) # Allow
null and blank
genre = [Link](max_length=50, null=True, blank=True) # Allow
null and blank
def __str__(self): return [Link]
class Serie([Link]):
name = [Link](max_length=150)
description = [Link](max_length=550) seasons =
[Link](default=0, blank=True)
def __str__(self): return [Link]
b. Ejecuta las migraciones de tus modelos desde Django Rest Framework para
generar las colecciones de manera automática en tu base de datos.
# from [Link] import User from rest_framework import
serializers from .models import Movie, Serie # <-- Esta línea es importante
class MovieSerializer([Link]): class Meta:
model = Movie fields = ('id','name','description','author','genre')
class SerieSerializer([Link]): class Meta:
model = Serie fields = ('id','name', 'description', 'seasons')
5. Utilicen Postman o la interfaz de Django Rest Framework para probar que tu
API RESTful funcione correctamente. Realiza ajustes de ser necesario. from
[Link] import re_path from [Link] import include from TVApp
import views from rest_framework import routers
# ----- MovieView ----- routerMovie = [Link]()
[Link]('', [Link]) # ----- SerieView ----- routerSerie =
[Link]() [Link]('', [Link])
urlpatterns=[ re_path(r'^movies/', include([Link])),
re_path(r'^movies/genre$', [Link].as_view({'get': 'getByGenre'})), #
Ruta para función personalizada re_path(r'^series/', include([Link]))
5. Utilicen Postman o la interfaz de Django Rest Framework para probar
que tu API
6. RESTful funcione correctamente. Realiza ajustes de ser necesario.
7. Utilicen Postman o la interfaz de Django Rest Framework para insertar
los registros (documentos) que elaboraste en la fase anterior.
Página 5 de 7 © Escuela Bancaria y Comercial, S.C.
Programación y arquitectura de aplicaciones
7. En un documento de texto, describan cada una de las rutas que conforman a
tu API, usa como guía la siguiente tabla.
admin/ / Muestra el panel administrador de Django Rest Framework.
Nombre de la API RESTful
Rut Métod
Descripción de la ruta
a o
Avance
Documento de texto que contenga:
Descripción de las rutas de la API RESTful.
Enlace del archivo de la base de datos en MongoDB.
Código fuente de la aplicación.
Entrega y presentación del proyecto
1. Integren todas las fases evidenciando los cambios realizados. Deberá
tener los archivos comprimidos del código fuente y la base de datos en
MongoDB.
2. Presenten al grupo su proyecto. Deberán considerar el siguiente orden:
a. Describan qué tipo API's crearon a partir de la necesidad detectada,
sus características y propósito.
b. Expliquen:
Los retos que presentaron al desarrollar el código.
Cuáles son las áreas de oportunidad del desarrollo.
NOTA: De manera individual, guarden su proyecto desarrollado
porque lo necesitarán para continuar con la siguiente etapa a
diseñar en la asignatura Programación y diseño de aplicaciones.
Página 6 de 7 © Escuela Bancaria y Comercial, S.C.
Programación y arquitectura de aplicaciones
Entregable
Documento de evidencias.
Archivo comprimido con la aplicación.