Gorilla Mux para Go: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Gorilla Mux e para que serve?

\n\n

Gorilla Mux (frequentemente chamado apenas de "mux", de "multiplexer") é um roteador HTTP (roteador) poderoso e popular para a linguagem de programação Go. Ele faz parte do ecossistema Gorilla Web Toolkit, que fornece muitos componentes úteis para desenvolvimento web.

\n\n

Para que serve um roteador separado, se a biblioteca padrão do Go já possui net/http? O http.ServeMux padrão é ótimo para projetos simples, mas tem uma série de limitações:

\n
    \n
  • Não suporta segmentos de caminho dinâmicos (por exemplo, /users/{id}).
  • \n
  • Não suporta métodos HTTP (GET, POST, PUT, DELETE) — é necessário verificar manualmente.
  • \n
  • Não suporta expressões regulares nas rotas.
  • \n
  • Não possui middleware integrado (software intermediário).
  • \n
\n\n

Gorilla Mux resolve todos esses problemas. Ele permite:

\n
    \n
  • Definir rotas complexas com partes variáveis.
  • \n
  • Restringir rotas por métodos HTTP, hosts, cabeçalhos e parâmetros de consulta (query).
  • \n
  • Usar sub-roteadores (subrouters) para agrupar rotas.
  • \n
  • Integrar-se facilmente com middleware.
  • \n
  • Construir APIs RESTful com URLs limpas e compreensíveis.
  • \n
\n\n

A biblioteca Gorilla Mux é o padrão de facto para construir servidores HTTP em Go. Ela é usada em milhares de projetos, desde pequenos microsserviços até grandes aplicações comerciais.

\n\n

Instalação

\n\n

A instalação do Gorilla Mux em um projeto Go é feita através do gerenciador de pacotes go get. Abra o terminal na raiz do seu projeto e execute o comando:

\n\n
go get -u github.com/gorilla/mux
\n\n

Este comando baixará a biblioteca e a adicionará ao seu arquivo go.mod. Depois disso, você pode importá-la no seu código:

\n\n
import "github.com/gorilla/mux"
\n\n

Se você estiver usando Go Modules (que é o padrão para Go 1.16+), a biblioteca será automaticamente adicionada aos seus arquivos go.mod e go.sum. Tudo pronto para começar!

\n\n

Início rápido: um servidor HTTP simples com Gorilla Mux

\n\n

Vamos criar um servidor web mínimo que processará requisições GET no caminho raiz e retornará uma saudação.

\n\n
package main\n\nimport (\n    "fmt"\n    "log"\n    "net/http"\n\n    "github.com/gorilla/mux"\n)\n\nfunc main() {\n    // Criando um novo roteador\n    r := mux.NewRouter()\n\n    // Definindo a rota: GET /\n    r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {\n        fmt.Fprintf(w, "Olá, mundo! Este é o Gorilla Mux!")\n    })\n\n    // Iniciando o servidor na porta 8080\n    log.Println("Servidor iniciado em http://localhost:8080")\n    log.Fatal(http.ListenAndServe(":8080", r))\n}
\n\n

Execute este código (go run main.go) e abra no navegador http://localhost:8080. Você verá a mensagem "Olá, mundo! Este é o Gorilla Mux!".

\n\n

Observe: passamos nosso roteador r para http.ListenAndServe. Isso é possível porque mux.Router implementa a interface http.Handler.

\n\n

Principais métodos e funções do Gorilla Mux

\n\n

Vamos examinar os principais métodos da biblioteca. Cada método será acompanhado de uma descrição, parâmetros e um exemplo funcional.

\n\n

1. mux.NewRouter()

\n

O que faz: Cria uma nova instância do roteador. Este é o ponto de partida para todas as rotas.

\n

Parâmetros: Nenhum.

\n

Retorna: Um ponteiro para mux.Router.

\n\n
r := mux.NewRouter()\n// Agora r está pronto para definir rotas
\n\n

2. r.HandleFunc(path, handler)

\n

O que faz: Registra uma função de tratamento (handler) para o caminho especificado. Esta é a principal forma de definir rotas.

\n

Par

Recommendations