GraphQL em Python
Crie schemas com resolvers Strawberry ou Ariadne.
Receita
Cartão de receita de referência rápida - pronto para copiar e colar.
import strawberry
@strawberry.type
class Query:
@strawberry.field
def hello(self) -> str:
return "world"Quando usar isso:
- Consultas flexíveis do cliente
- Agregação BFF
- Tipagem forte com Strawberry
Exemplo de Trabalho
schema = strawberry.Schema(query=Query)O que isso demonstra:
- strawberry.field
- Objeto Schema
- Integração ASGI
Mergulho Profundo
Como Funciona
- GraphQL resolve campos por formato de requisição.
- Proteja contra abuso de profundidade/complexidade.
- Ainda autentique na camada de transporte.
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.
- Vazamento 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 param 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 de 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 | Necessidades de autenticação, fluxos de trabalho ou conformidade personalizadas |
| gRPC | RPC interno de alta performance | Clientes HTTP públicos e acesso ao navegador |
FAQs
Quando devo adotar GraphQL Python?
Use quando os padrões e trade-offs desta página corresponderem à sua API ou limite de dados.
Qual é o principal erro de produção com GraphQL Python?
Ignorar validação, timeouts ou contratos de erro explícitos na borda HTTP.
Como testar GraphQL Python?
Use o cliente de teste do framework, substitua dependências e afirme o status mais a forma JSON.
GraphQL Python funciona com Python 3.14?
Sim - exemplos visam Python 3.14 com versões de framework fixadas do rodapé da stack.
Como GraphQL Python se relaciona com Pydantic 2?
Valide e serialize nas bordas; mantenha os 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.
O que devo ler a seguir?
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 upstream antes de trocar de framework.
Relacionados
- Noções Básicas de Design de API - Convenções REST
- OAuth2 & JWT - Fluxos de Token
- Gerenciamento de Segredos - Env e vaults
- Validação de Entrada e Injeção - Defesas
Versões da Stack: 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+.