No nosso último artigo, explorámos o o artigo do Gin, o framework mais popular do ecossistema Go. Ele é excelente, robusto e segue a filosofia “Go Way”.
Mas, e se eu te dissesse que existe um framework que é ainda mais rápido e que foi desenhado especificamente para parecer que estás a escrever JavaScript?
Apresento-te o Go Fiber.
Se és um programador que está a migrar do Node.js e tens saudades do Express.js, o Fiber vai ser amor à primeira vista. Ele foi criado com um objetivo claro: trazer a facilidade de desenvolvimento do Express para a performance bruta do Go.
Neste guia, vamos ver porque é que o Fiber é considerado um dos frameworks mais rápidos do mundo e como podes criar a tua primeira API com ele em minutos.
O Segredo da Velocidade: fasthttp
A maioria dos frameworks (como o Gin) usa a biblioteca padrão net/http do Go. É segura e fiável. O Fiber, no entanto, é construído sobre o fasthttp.
O fasthttp é uma alternativa à biblioteca padrão focada em performance extrema e zero alocação de memória. Em benchmarks sintéticos, o Fiber consegue processar milhões de pedidos por segundo, deixando muitos concorrentes para trás.
Nota de Mentor: Esta velocidade tem um custo. O Fiber não é 100% compatível com a interface padrão net/http. Para 99% dos projetos, isso não importa, mas é bom você saber.
A Sintaxe: Express.js em Go?
Olha para esta comparação. Se já usaste Express (Node.js), isto é-te familiar: app.get('/', (req, res) => res.send('Hello World'))
Agora, vê o Fiber: app.Get("/", func(c *fiber.Ctx) error { return c.SendString("Hello World") })
A semelhança é intencional. O Fiber usa os mesmos métodos (Get, Post, Use), o mesmo conceito de contexto e uma estrutura de middleware quase idêntica.
Mão na Massa: A Tua Primeira API com Fiber
Vamos criar um projeto novo para veres a fluidez.
- Cria a pasta:
mkdir aprendendo-fibere entra nela. - Inicia o módulo:
go mod init meunome/fiber - Instala o Fiber v2:
go get github.com/gofiber/fiber/v2
Cria o ficheiro main.go:
Go
package main
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
)
func main() {
// 1. Inicializa a App (tal como no Express: const app = express())
app := fiber.New()
// 2. Middleware (Opcional, mas útil para ver logs)
app.Use(logger.New())
// 3. Rota Simples
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Olá, Mundo! O Fiber é rápido!")
})
// 4. Rota com Parâmetros (Parâmetros nomeados)
// Ex: /ola/Thiago
app.Get("/ola/:nome", func(c *fiber.Ctx) error {
nome := c.Params("nome")
return c.SendString("Olá, " + nome)
})
// 5. Iniciar o servidor na porta 3000
app.Listen(":3000")
}
Corre com go run main.go e acede a localhost:3000/ola/dev. Simples, direto e sem configurações complexas de descodificadores.
Lidar com JSON (Body Parser)
Tal como vimos no Gin, ler dados enviados pelo utilizador é crucial. O Fiber torna isso incrivelmente simples com o BodyParser.
Go
type Produto struct {
Nome string `json:"nome"`
Preco float64 `json:"preco"`
}
func main() {
app := fiber.New()
app.Post("/produtos", func(c *fiber.Ctx) error {
p := new(Produto)
// Tenta fazer o parse do corpo do pedido para a struct
if err := c.BodyParser(p); err != nil {
return c.Status(400).SendString(err.Error())
}
// Aqui poderias salvar no banco de dados...
// Retorna o objeto criado em JSON
return c.Status(201).JSON(p)
})
app.Listen(":3000")
}
Repara como o método c.Status(201).JSON(p) é legível e encadeado, muito ao estilo JavaScript.
Gin vs. Fiber: Qual Escolher?
Esta é a dúvida de um milhão de euros. Como teu mentor, aqui vai a minha visão pragmática:
- Escolhe Gin se: Queres estabilidade absoluta, compatibilidade com qualquer biblioteca Go padrão e estás num ambiente corporativo conservador. É a escolha “segura”.
- Escolhe Fiber se: Vens do Node.js, queres desenvolver muito rápido (DX – Developer Experience) ou precisas de performance bruta para aguentar cargas absurdas. É a escolha “moderna”.
Conclusão: A Melhor Ferramenta é a que Tu Usas
O Go Fiber é uma peça de engenharia impressionante. Ele prova que o Go pode ser tão fácil de escrever como o JavaScript, mas mantendo a segurança e a velocidade de uma linguagem compilada.
Se o código do Gin te assustou um pouco no artigo passado, o Fiber é a tua porta de entrada ideal.
Desafio Rápido: Tenta adicionar uma validação simples no código acima. Se o Preco for menor que 0, retorna um erro 400 Bad Request.
Já tinhas ouvido falar do Fiber? Preferes a sintaxe dele ou a do Gin?
Se inscreva em nossa newsletter!