Validación de Datos y Modelos en Endpoints de FastAPI
Clase 7 de 23 • Curso de FastAPI
Resumen
La validación de datos y la gestión de modelos en FastAPI permite crear endpoints seguros y eficientes. En este ejemplo, mostramos cómo manejar un modelo para recibir y devolver datos sin exponer identificadores innecesarios. Partimos del modelo Customer
y desarrollamos un modelo específico para la creación, CustomerCreate
, que omite el ID para que sea generado automáticamente en el backend.
¿Cómo configuramos los modelos para crear un nuevo cliente sin ID?
Para evitar enviar un ID manualmente, creamos CustomerCreate
, que hereda de Customer
pero excluye el ID, dejándolo en blanco hasta que se complete la validación. Esto es útil porque:
- El ID se asigna automáticamente en la base de datos o mediante código en memoria.
- Evitamos exposición de datos sensibles innecesarios en las solicitudes.
¿Cómo gestionamos la validación y asignación de ID en el backend?
FastAPI permite validar datos mediante modelos y gestionar IDs sin base de datos:
- Se usa una variable
current_id
inicializada en 0 que se incrementa por cada nuevo registro. - Los datos recibidos son validados y convertidos a diccionario (
model.dict()
), creando una entrada limpia y sin errores. - En un entorno asincrónico, no se recomienda incrementar
current_id
de forma manual, por lo que una lista simula la base de datos en memoria, donde el ID es el índice del elemento.
¿Cómo configuramos un endpoint para listar clientes?
El endpoint GET
permite visualizar todos los clientes registrados:
- Definimos un modelo
List[Customer]
comoresponse_model
para mostrar un JSON con los clientes. - FastAPI convierte automáticamente la lista de
Customer
a un JSON, haciéndola accesible desde la documentación.
¿Qué ocurre al crear un nuevo cliente en memoria?
Dado que estamos trabajando en memoria:
- Los datos se borran al reiniciar el servidor.
- Para cada cliente creado, asignamos un ID basado en el índice de la lista, simulando el autoincremento de una base de datos real.
¿Cómo crear un endpoint para obtener un cliente específico por ID?
Finalmente, para acceder a un cliente específico, añadimos un nuevo endpoint que recibe el ID en la URL:
- Este endpoint busca en la lista por ID y devuelve el cliente en formato JSON.
- Si el cliente no existe, FastAPI devuelve un error, protegiendo la integridad de los datos.