DÍA 14Proyecto final: API de lectura Sakila · Python Backend y APIs para Datos

Define rutas, respuestas, límites y permisos para el proyecto final de FastAPI.

Día 14 18 minIntermedio

Base oficial Sakila de MySQL

El proyecto consulta customer y payment; sus tablas canónicas permanecen de solo lectura.

Planear una API de lectura sobre Sakila

Objetivos

Vas a convertir preguntas de análisis en rutas pequeñas con un contrato verificable y permisos mínimos.

Concepto

Un endpoint útil responde una necesidad concreta y define qué forma de datos devuelve. Antes de codificar, anota el método, la ruta, los parámetros, los estados de error y las columnas que salen. Para customer, la unidad es un cliente por fila; para payment, es un pago por fila. En el resumen, la unidad cambia a un grupo por staff_id.

La API final lee el esquema original sakila con FastAPI, SQLAlchemy y MySQL. Solo expone customer y payment; no necesita aceptar SQL libre. El manual oficial Sakila describe la instalación, el esquema y sus datos. El proyecto se ejecuta localmente y no incluye dump ni datos en su descarga.

Ejemplo

Este es el contrato que implementarás en el proyecto:

MétodoRutaParámetrosUso y estado principal
GET/health—Responde 200 con { "status": "ok" }; no prueba MySQL.
GET/customers/{customer_id}ID positivo200 con cuatro campos o 404 si no existe.
GET/customerslimit, offset, activeLista acotada y ordenada por customer_id.
GET/paymentslimit, offset, staff_id, importesLee pagos con filtros validados.
GET/payments/summarystaff_id opcionalCuenta y suma pagos por identificador de staff.

Todos los parámetros se validan antes de consultar. La lista tiene máximo 50 filas por petición. El esquema de respuesta omite columnas que no necesita, como el correo. staff_id identifica a quien procesó un pago en esta muestra; no demuestra ubicación ni desempeño.

Práctica guiada

Para cada ruta, escribe en una tabla pequeña el método, la fila que representa un elemento, los campos de salida y el estado esperado si no encuentra coincidencias. Comprueba que ninguna ruta modifica datos.

Reto

Agrega una condición de aceptación para los errores y otra para proteger la cuenta MySQL. Ambas deben poder verificarse por otra persona.

Intenta el reto antes de consultar las pistas.

Quiz

1. ¿Qué significa el grano de una respuesta?
2. ¿Qué debe limitar la API de lectura?
3. ¿Qué inferencia no se puede obtener solo de staff_id?

Comprobación

El contrato, los límites y el permiso de solo lectura están definidos. Descarga el paquete para conectar y ejecutar la implementación revisable.

TU PROGRESO

Cargando estado…