Todos mis apuntes en https://rain-scabiosa-74f.notion.site/Curso-de-FastAPI-c414d59370504c448505a80b69f93b12
Diferencia Path, Query Parameters and Request Body
usamos Path Parameters cuando por ejemplo se trata de un id y esas cosas, como una variable etc, usamos los Requests Body para enviar información que tiene formato de un modelo y usamos los Query Parameters para solicitar infomación opcional del servidor.
Validaciones Models
Para validar modelos tomamos uso de la clase de Pydantic Field, que funciona igual a las validaciones que ya hemos hecho con Path, Query y Body
from pydantic import BaseModel, Field
class Person(BaseModel):
first_name: str = Field(
...,
min_length=1,
max_length=50,
)
last_name: str = Field(
...,
min_length=1,
max_length=50,
)
age: int = Field(
...,
gt=0,
le=110
)
hair_color: Optional[HairColor] = Field(default=None)
is_married: Optional[bool] = Field(default=None)
Puedes ver que en hair_color ya tenemos un tipo distinto a String esto lo hacemos para validar que tenga un campo permitido, haciendo otra clase usando Enum
from enum import Enum
class HairColor(Enum):
white: str = 'white'
black: str = 'black'
brown: str = 'brown'
red: str = 'red'
blonde: str = 'blonde'
tinted: str = 'tinted'
Aquí tenemos enumerados algunos colores de pelo y ahora cada vez que alguien trate de ingresar un valor que no se encuentra en nuestra clase que hereda de Enum, le arrojará un error 422 Unprocessable Entity con el siguiente mensaje
{
"detail": [
{
"loc": [
"body",
"person",
"hair_color"
],
"msg": "value is not a valid enumeration member; permitted: 'white', 'black', 'brown', 'red', 'blonde', 'tinted'",
"type": "type_error.enum",
"ctx": {
"enum_values": [
"white",
"black",
"brown",
"red",
"blonde",
"tinted"
]
}
}
]
}
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.