Contenido del curso

Validaciones de tipos de datos con Pydantic

Resumen

¿Qué son las validaciones de datos en FastAPI?

Las validaciones de datos son fundamentales para asegurar que la información ingresada en nuestras aplicaciones cumpla con ciertos requerimientos, garantizando así integridad, coherencia, y correcto funcionamiento. FastAPI ofrece herramientas automáticas para realizar ciertas validaciones, pero también permite personalizarlas para satisfacer necesidades específicas.

¿Cómo realiza FastAPI las validaciones automáticas?

FastAPI gestiona automáticamente ciertas validaciones a partir de la estructura de datos definida. Por ejemplo, al intentar registrar una película sin un campo requerido como "rating", FastAPI devolverá un mensaje de error indicando la falta del campo, clasificándolo como value error. Asimismo, si se intenta consultar una película usando un ID que no es numérico, FastAPI devuelve un type error, señalando la invalidez del tipo de valor proporcionado.

¿Cómo agregar validaciones personalizadas usando FastAPI?

Para crear validaciones personalizadas, FastAPI se apoya en Pydantic, un módulo que permite declarar las restricciones que deben cumplir los campos. A continuación, un ejemplo sobre cómo hacerlo:

  1. Importación y Declaración:

    Importa la clase Field desde Pydantic para establecer limitaciones como la longitud máxima de un campo. Puedes aplicar esta clase a diferentes elementos del esquema.

    from pydantic import BaseModel, Field class Pelicula(BaseModel): titulo: str = Field(..., max_length=15)
  2. Pruebas de validación:

    Al intentar registrar un título que supere los 15 caracteres, FastAPI generaría un error indicando que el campo título debe contener un máximo de 15 caracteres.

  3. Campo con valores predeterminados:

    A través del argumento default en la clase Field, puedes definir un valor por defecto para ser mostrado en la documentación:

    titulo: str = Field(default='Mi película')

¿Qué podemos configurar con el campo 'Field'?

Además de limitar la longitud máxima, con Field podemos:

  • Establecer longitud mínima:

    Utiliza min_length para asegurar que los valores superen una longitud determinada.

    overview: str = Field(..., min_length=15, max_length=50, description='Descripción de la película')
  • Rangos numéricos:

    Para asegurar que un número esté dentro de un rango específico, los campos enteros pueden ser validados con le (menor o igual) y ge (mayor o igual).

    anio: int = Field(..., le=2022)

¿Cómo adicionar ejemplos y valores predeterminados complejos?

En FastAPI, podemos definir ejemplos y valores predeterminados dentro de un modelo, creando una clase interna Config. Esta configuración permite ofrecer ejemplos detallados en la documentación generada automáticamente.

class Pelicula(BaseModel): # Campos y sus validaciones class Config: schema_extra = { "example": { "id": 1, "titulo": "Ejemplo de título", "overview": "Descripción ejemplo", "anio": 2022, "rating": 9.8, "categoria": "Acción" } }

Con esto, la documentación reflejará estos valores por defecto y guiará a los usuarios en la correcta interacción con la API.

Continúa optimizando tus habilidades de validación y explora todo lo que FastAPI tiene por ofrecer. Sigue practicando y, ¡descubre cómo validar los parámetros en la siguiente lección!