Pular para o conteúdo

Go Fiber Tutorial: A Performance do Go com a Sintaxe do Express.js

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.

  1. Cria a pasta: mkdir aprendendo-fiber e entra nela.
  2. Inicia o módulo: go mod init meunome/fiber
  3. 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!