Validar y entregar la API de lectura Sakila
Objetivos
Vas a verificar el comportamiento esperado, revisar los límites de seguridad y reunir una entrega reproducible.
Concepto
Una API que devuelve 200 en una llamada no está validada por completo. También hay que revisar una búsqueda ausente, límites numéricos, la respuesta pública, los métodos admitidos y los permisos de la cuenta MySQL. Los tests automatizados capturan parte de ese contrato con fixtures sintéticos; la ejecución local contra Sakila confirma el montaje real del estudiante.
Repite py -m pytest -q y compara una ruta con /docs. El paquete incluye datos y resultados de prueba solo dentro del fixture en memoria, instrucciones, código de referencia y esta rúbrica. No incluye dump, .env ni credenciales.
Ejemplo
El README del proyecto contiene el contrato y la rúbrica. Antes de entregar, revisa esta lista:
GET /healthresponde200con{"status":"ok"}sin consultar MySQL.GET /customers/{id}devuelve los cuatro campos esperados o404.- Listas y pagos se ordenan y respetan límites; parámetros inválidos devuelven
422. - El resumen contiene una fila por
staff_idy sus importes reconcilian con la consulta usada. POST /customersdevuelve405; no hay rutasPOST,PUT,PATCHniDELETEsobre Sakila.- Los tests usan SQLite y sus nombres son ficticios; no se citan como resultados de la muestra.
SHOW GRANTSconfirma quesakila_readersolo leesakila.*;.envpermanece fuera de Git.
Práctica guiada
Ejecuta la suite, anota el total de pruebas y luego verifica manualmente /health, una lista y un cliente inexistente en /docs. Revisa los grants con MySQL y confirma que .env no aparece en el estado de Git.
Reto
Entrega el proyecto con una breve nota que identifique endpoints probados, resultados de tests, permisos y límites; no publiques contraseñas ni datos personales.
Intenta el reto antes de consultar las pistas.
Quiz
Comprobación
Al terminar, otra persona puede instalar la API, comprobar el contrato con tests y ejecutar las consultas de lectura contra Sakila local. El curso no presenta el ejemplo como un backend listo para producción.