Pitch: Criei uma API em FastAPI para validação de dados brasileiros e publiquei no RapidAPI (código e aprendizados)
Fala pessoal!
Todo desenvolvedor que trabalha em sistemas brasileiros já precisou implementar, pelo menos uma vez, rotinas de validação de CPF, CNPJ, busca de CEP ou checagem de chaves PIX. Na maioria dos casos, acabamos copiando snippets da internet ou lidando com APIs externas que caem e travam o fluxo da aplicação por falta de timeout adequado.
Para resolver essa dor de forma definitiva e estudar o fluxo completo de lançamento de um micro-SaaS de dados, desenvolvi e publiquei a Brazil Data API.
Gostaria de compartilhar aqui as decisões técnicas de arquitetura, o que aprendi no processo e ouvir a opinião de vocês.
- O que a API resolve?
O objetivo principal foi criar um serviço leve, resiliente e rápido, com três frentes:
CEP (GET /api/v1/cep/{cep}): Sanitiza a entrada (mantendo apenas números), valida tamanho e consulta o ViaCEP com fallback seguro e tipagem estrita de retorno.
CNPJ (GET /api/v1/cnpj/{cnpj}): Aqui está uma das decisões de arquitetura mais importantes: a validação dos dígitos verificadores (Módulo 11) é feita matematicamente antes de qualquer chamada externa. Se o CNPJ for inválido, a API retorna 400 Bad Request imediatamente em ~2ms, economizando I/O de rede e chamadas para a BrasilAPI/Receita.
Validador Universal (POST /api/v1/validador):
Valida CPF e CNPJ por algoritmo de módulo 11 (rejeitando dígitos repetidos).
Identificador de Chave PIX: Você passa uma chave e a API deduz automaticamente se é e-mail, telefone (formato E.164 do BACEN), chave aleatória (EVP/UUID v4) ou CPF/CNPJ, aplicando a respectiva validação sintática.
2. Decisões Técnicas e Cuidados com Performance
FastAPI + Pydantic v2: Geração automática do contrato OpenAPI (/openapi.json), o que facilitou importar a API diretamente para o RapidAPI sem precisar escrever documentação manual.
Connection Pooling no requests: Para evitar o overhead de criar conexões TCP/TLS a cada requisição para os serviços externos, configurei um HTTPAdapter com pool persistente (Keep-Alive) e política suave de retries:
python
http_session = requests.Session()
adapter = HTTPAdapter(pool_connections=25, pool_maxsize=50, max_retries=2)
http_session.mount("https://", adapter)
Timeouts Rígidos (Fail-Safe): Nenhuma chamada externa pode demorar mais que 5 segundos. Em caso de lentidão nos órgãos de origem, a API responde 504 Gateway Timeout ou 502 Bad Gateway com mensagens claras em JSON, sem deixar a thread travada consumindo memória.
3. Hospedagem e Monetização
Hospedagem: O microserviço está rodando no plano gratuito do Render.com. A aplicação escuta a porta definida dinamicamente pela variável $PORT.
Marketplace e Cobrança: Foi listada no RapidAPI, permitindo que outros desenvolvedores utilizem em suas aplicações com planos desde o gratuito (300 requisições/mês para testes) até planos para empresas.
4. Links do Projeto
Testar no RapidAPI: https://rapidapi.com/willianpassisistemas/api/brazil-data-document-validator-api
O que acharam da estrutura dos endpoints e das regras de validação? Alguma sugestão de melhoria ou novo endpoint que seria útil incluir na esteira?
Valeu pelo feedback! 🚀