Pular para o conteúdo

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

No artigo sobre Gin, exploramos o framework mais popular do ecossistema Go — robusto e fiel à filosofia “Go Way”. Mas existe um framework ainda mais rápido, desenhado especificamente pra parecer que você está escrevendo JavaScript: o Go Fiber.

Se você está migrando do Node.js e sente falta do Express.js, o Fiber vai ser amor à primeira vista — ele nasceu com o objetivo claro de trazer a facilidade de desenvolvimento do Express pra performance bruta do Go.

Resumo rápido

  • Fiber roda sobre fasthttp, que o próprio repositório oficial descreve como até 10x mais rápido que net/http em benchmark.
  • Custo dessa velocidade: Fiber não é 100% compatível com a interface padrão net/http — pra 99% dos projetos isso não importa, mas vale saber.
  • A sintaxe é deliberadamente parecida com Express: app.Get(), app.Post(), app.Use().

O Segredo da Velocidade: fasthttp

A maioria dos frameworks (Gin incluso) usa a biblioteca padrão net/http. É segura e confiável. O Fiber é construído sobre o fasthttp, uma alternativa focada em performance extrema e baixíssima alocação de memória — até 10x mais rápido que net/http em benchmark, segundo o próprio repositório do projeto.

A Sintaxe: Express.js em Go?

Se você já usou Express (Node.js), isso vai parecer familiar:

app.get('/', (req, res) => res.send('Hello World'))

Agora o Fiber:

app.Get("/", func(c *fiber.Ctx) error { return c.SendString("Hello World") })

A semelhança é intencional — mesmos métodos (Get, Post, Use), mesmo conceito de contexto, estrutura de middleware quase idêntica.

Mão na Massa: Sua Primeira API com Fiber

mkdir aprendendo-fiber && cd aprendendo-fiber
go mod init meunome/fiber
go get github.com/gofiber/fiber/v2
package main

import (
    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/fiber/v2/middleware/logger"
)

func main() {
    app := fiber.New()
    app.Use(logger.New())

    app.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("Olá, Mundo! O Fiber é rápido!")
    })

    // Rota com parâmetro nomeado — ex: /ola/Thiago
    app.Get("/ola/:nome", func(c *fiber.Ctx) error {
        nome := c.Params("nome")
        return c.SendString("Olá, " + nome)
    })

    app.Listen(":3000")
}

Rode com go run main.go e acesse localhost:3000/ola/dev. Simples, direto, sem configuração complexa de decodificador.

Lidando com JSON (Body Parser)

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)
        if err := c.BodyParser(p); err != nil {
            return c.Status(400).SendString(err.Error())
        }
        return c.Status(201).JSON(p)
    })

    app.Listen(":3000")
}

Repare como c.Status(201).JSON(p) é legível e encadeado, bem ao estilo JavaScript.

Gin vs. Fiber: Qual Escolher?

  • Gin se: você quer estabilidade absoluta, compatibilidade total com qualquer biblioteca Go padrão, e está num ambiente corporativo mais conservador.
  • Fiber se: você vem do Node.js, quer developer experience rápida, ou precisa de performance bruta pra aguentar carga pesada.

Perguntas frequentes

Fiber é seguro pra produção? Sim — é amplamente usado, mas por não seguir a interface net/http padrão, algumas bibliotecas de middleware feitas pra net/http não funcionam direto nele.

Preciso saber Express.js pra usar Fiber? Não é obrigatório, mas ajuda bastante — a API foi desenhada de propósito pra ser familiar pra quem vem do Node.

Fiber é mais rápido que Gin também? Em benchmark sintético, sim, geralmente — mas a diferença raramente é o gargalo real da sua aplicação (banco de dados e rede de rede costumam pesar mais que o framework em si).

Conclusão

O Go Fiber prova que Go pode ser tão fácil de escrever quanto JavaScript, mantendo a segurança e velocidade de uma linguagem compilada. Se o código do Gin assustou um pouco, o Fiber é uma porta de entrada mais amigável — sem abrir mão de performance real.

Desafio rápido: adicione uma validação simples no código do endpoint de produto — se Preco for menor que 0, retorne erro 400.

Recomendação relacionada

The Go Programming Language

Escrito por Alan Donovan e Brian Kernighan, é a referência mais citada por quem quer entender Go a fundo, além do básico.

Ver na Amazon →

Como Associado Amazon, Visão Binária pode ganhar uma comissão sobre compras qualificadas feitas através deste link, sem custo adicional pra você.