Validadores
Validadores de campo e modelo, além de campos computados.
Receita
Cartão de referência rápida - pronto para copiar e colar.
from pydantic import BaseModel, field_validator
class Name(BaseModel):
value: str
@field_validator("value")
@classmethod
def strip(cls, v: str) -> str:
return v.strip()Quando usar isso:
- Normalizar strings
- Verificações entre campos
- Campos derivados computados
Exemplo de Trabalho
from pydantic import BaseModel, computed_field
class Rectangle(BaseModel):
width: float
height: float
@computed_field
@property
def area(self) -> float:
return self.width * self.heightO que isso demonstra:
- field_validator
- computed_field
- decorador property
Análise Profunda
Como Funciona
- Validadores rodam em ordem definida: antes, depois.
computed_fieldinclui valores derivados em dumps.- Mantenha os validadores puros e rápidos.
Armadilhas
- Validação de limite ignorada - Dados inválidos chegam às camadas de persistência. Correção: Valide com Pydantic ou formulários do framework na borda.
- Exposição de traces de pilha - Clientes veem erros internos. Correção: Mapeie exceções para respostas HTTP estáveis.
- Bloqueio de loops de eventos assíncronos - Workers travam sob carga concorrente. Correção: Use drivers assíncronos ou wrappers de threadpool.
- Segredos em controle de versão - Credenciais vazam pelo histórico do git. Correção: Carregue segredos de variáveis de ambiente ou um vault em tempo de execução.
- Falta de observabilidade - Incidentes são difíceis de depurar. Correção: Adicione logs estruturados, métricas e IDs de requisição.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Framework alternativo neste cookbook | Padrão da equipe ou monólito existente | API Greenfield com restrições diferentes |
| BaaS Gerenciado | MVP apenas CRUD | Autenticação personalizada, fluxos de trabalho ou necessidades de conformidade |
| gRPC | RPC interna de alta performance | Clientes HTTP públicos e acesso ao navegador |
FAQs
Quando devo adotar validadores Pydantic?
Use quando os padrões e trade-offs nesta página corresponderem à sua API ou limite de dados.
Qual é o principal erro de produção com validadores Pydantic?
Ignorar validação, timeouts ou contratos de erro explícitos na borda HTTP.
Como testar validadores Pydantic?
Use o cliente de teste do framework, substitua dependências e afirme o status mais a forma do JSON.
Validadores Pydantic funcionam com Python 3.14?
Sim - exemplos visam Python 3.14 com versões de framework fixadas do rodapé da pilha.
Como validadores Pydantic se relacionam com Pydantic 2?
Valide e serialize nas bordas; mantenha serviços funcionando com objetos de domínio tipados.
Síncrono ou assíncrono?
Prefira rotas assíncronas quando I/O domina; mantenha o trabalho de CPU pequeno ou descarregue para workers.
Onde a lógica de negócios deve residir?
Handlers finos; serviços possuem regras; repositórios possuem consultas.
Como documentar APIs?
Publique documentação OpenAPI ou de schema que corresponda aos modelos de resposta no código.
Como lidar com versionamento?
Versionamento explícito de URL ou cabeçalho com janelas de depreciação - evite quebras silenciosas.
O que devo ler em seguida?
Siga os links Relacionados para a próxima camada de profundidade nesta seção.
Como me manter seguro?
Autentique chamadores, autorize por recurso, limite a taxa e nunca registre segredos.
Primeiro passo para performance?
Meça a latência do DB e de upstream antes de trocar de framework.
Relacionados
- Pydantic Basics - Modelos principais
- Validators - Regras personalizadas
- Serialization - model_dump
- Settings Management - Configuração de env
Versões da Pilha: Esta página foi escrita para Python 3.14.0 (stable 3.14, maintenance 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.