Go — HTTP e frameworks web
TL;DR
Galho 10 da trilha Go — como Go vira servidor web. 8 notas em 3 fases: o servidor HTTP embutido na stdlib e roteamento (Iniciado); request/response, middleware, os três frameworks de mercado (Gin, Chi, Echo) e o idioma REST em Go (Adepto); clientes HTTP e como servir em produção com timeouts e limites (Magus). Ao fim, você sabe por que Go dispensa framework pra montar um servidor decente — e quando escolher um mesmo assim.
Aqui o Go mostra outra aposta de design: net/http já é um servidor web completo e idiomático, sem depender de terceiros — os frameworks existem pra conveniência (roteamento com parâmetros, agrupamento de middleware), não pra suprir uma lacuna estrutural. Ver roadmap pro estado das notas.
Notas por fase
Iniciado — o servidor que já vem pronto
- 01 - O servidor HTTP da stdlib —
http.ListenAndServe,http.Handler,HandlerFunc,http.Servere seus campos - 02 - Roteamento —
http.ServeMux(inclusive o roteamento por método/padrão do Go 1.22+), por que a stdlib bastava e quando não basta mais
Adepto — modelando a requisição
- 03 - Request e Response —
http.Request(body, headers, query, context),http.ResponseWriter, JSON de entrada/saída - 04 - Middleware — o padrão
func(http.Handler) http.Handler, encadeamento, logging/recovery/auth como middleware - 05 - Frameworks — Gin, Chi, Echo — o que cada um resolve além da stdlib, trade-offs, quando escolher qual
- 06 - REST idiomático em Go — convenções de rota, status codes, tratamento de erro em handler, versionamento
Magus — servindo de verdade
- 07 - Clientes HTTP —
http.Client, timeouts, retry, connection pooling,contextpropagado no client - 08 - Servindo em produção — timeouts e limites —
ReadTimeout/WriteTimeout/IdleTimeout, graceful shutdown, limites de tamanho de body, rate limiting
Veja também
- Trilha Go — índice geral (21 galhos + capstone)
- Próximo galho: Persistência (galho 11) —
database/sql, pool, pgx, sqlc, GORM, migrations