Validação de entrada no FastAPI

Colocando IA em Produção com FastAPI

Matt Eckerle

Software and Data Engineering Leader

Validando dados de entrada

Fluxograma mostrando previsão de ML com FastAPI

Colocando IA em Produção com FastAPI

Por que validar a entrada?

 

  • Validação para integridade dos dados
  • Evita erros na aplicação
  • Integra com Pydantic
  • Oferece ferramentas poderosas de validação

 

Um logotipo do Pydantic

Colocando IA em Produção com FastAPI

Pydantic para funções predefinidas

Validação de campo usando pydantic

Colocando IA em Produção com FastAPI

Validação personalizada com pydantic

Validação personalizada usando pydantic

Colocando IA em Produção com FastAPI

Relato de erros amigável

Relato de erros durante a validação

Colocando IA em Produção com FastAPI

Validadores de campo do Pydantic

  • Endpoint de cadastro de usuário

  • Validando o nome de usuário informado:

from pydantic import BaseModel, Field
class User(BaseModel):
    username: str = Field(..., min_length=3, max_length=50)
Colocando IA em Produção com FastAPI

Adicionando validadores personalizados

class User(BaseModel):
    username: str = Field(..., 
                          min_length=3, 
                          max_length=50)
    age: int

@field_validator('age') def age_criteria(cls, age): if age < 13: raise ValueError('User must be at least 13') return age
Colocando IA em Produção com FastAPI

Validadores personalizados em ação

Requisição válida:

{"username": "john_doe", "age": 25}
Usuário válido: username='john_doe' age=25

Requisição inválida:

{"username": "too_young", "age": 10}
Erro de validação para {'username': 'too_young', 'age': 10}: User must be at least 13
Colocando IA em Produção com FastAPI

Juntando tudo

Relato de erros durante a validação

  • Validador de campo para username
  • Validador personalizado para age
  • Mensagem de erro se a validação falhar
Colocando IA em Produção com FastAPI

Juntando tudo

@app.post("/users")
def create_user(user: User):
    return {"message": "User created",
            "user": user.model_dump()}

Saída:

{
  "message": "User created successfully",
    "user": {
          "username": "john_doe", 
           "age": 25
    }
}
Colocando IA em Produção com FastAPI

Vamos praticar!

Colocando IA em Produção com FastAPI

Preparing Video For Download...