Novo web framework para Go (Golang) ganha força: o que os desenvolvedores precisam saber
O ecossistema Go (Golang) continua a evoluir rapidamente. Se antes a escolha de um web framework para Go praticamente sempre se resumia ao trio clássico — Gin, Echo e Fiber —, agora um novo player entra em cena, conquistando seu espaço com confiança. De acordo com dados do GitHub e pesquisas com desenvolvedores do último trimestre, um dos frameworks de nova geração apresenta crescimento recorde de estrelas e contribuidores. Estamos falando do Huma (ou, em uma versão alternativa, do Fuego — um framework focado em OpenAPI e geração de código). Vamos entender o motivo de tanto interesse.
Por que a comunidade Go busca algo novo?
Gin e Echo continuam sendo excelentes soluções para um início rápido, mas possuem limitações fundamentais:
- Falta de tipagem estrita de rotas — parâmetros frequentemente são passados como strings, aumentando o risco de erros em tempo de execução.
- Integração fraca com OpenAPI/Swagger — para gerar documentação, é necessário conectar ferramentas de terceiros (swaggo), que nem sempre estão sincronizadas com o código.
- Verbosidade na validação — a verificação de dados de entrada frequentemente exige escrever código redundante.
O novo framework resolve esses problemas, oferecendo uma abordagem completamente diferente, baseada em configuração declarativa e geração de código em tempo de compilação.
Principais características do novo framework (com base em Huma e Fuego)
Embora os projetos sejam diferentes, eles compartilham uma filosofia comum: "Escreva menos, obtenha mais". Os principais recursos que atraíram os desenvolvedores:
- OpenAPI zero-config: O framework gera automaticamente a especificação OpenAPI 3.1 com base nas assinaturas de suas funções Go e estruturas de dados. Você não precisa mais escrever anotações em comentários.
- Rotas type-safe (Type-safe routing): Parâmetros de caminho, query strings e corpo da requisição são verificados pelo compilador Go. Se você alterar uma estrutura de dados, o compilador apontará todas as inconsistências nas rotas antes da execução.
- Validação integrada: São usadas tags Go padrão (validate) ou validadores personalizados. Erros de validação são automaticamente encapsulados em uma resposta HTTP correta (400 Bad Request com esquema JSON de erro).
- Desempenho: Benchmarks mostram que o novo framework não fica atrás do Gin em velocidade e, em alguns cenários (serialização de JSON complexo), até o supera graças ao uso de bibliotecas como jsoniter ou bytebufferpool.
Exemplo de código: como fica na prática
Compare: no Gin, você escreveria:
r.GET("/users/:id", func(c *gin.Context) { id := c.Param("id") // ... validação manual})No novo framework (sintaxe Fuego/Huma):
type GetUserParams struct { ID int `path:"id" validate:"required,min=1"`}huma.Get(api, "/users/{id}", func(ctx context