O que é Gorilla Mux e para que serve?
\n\nGorilla 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\nPara 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ã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
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
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\nInstalação
\n\nA 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:
go get -u github.com/gorilla/mux\n\nEste comando baixará a biblioteca e a adicionará ao seu arquivo go.mod. Depois disso, você pode importá-la no seu código:
import "github.com/gorilla/mux"\n\nSe 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!
Início rápido: um servidor HTTP simples com Gorilla Mux
\n\nVamos criar um servidor web mínimo que processará requisições GET no caminho raiz e retornará uma saudação.
\n\npackage 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\nExecute este código (go run main.go) e abra no navegador http://localhost:8080. Você verá a mensagem "Olá, mundo! Este é o Gorilla Mux!".
Observe: passamos nosso roteador r para http.ListenAndServe. Isso é possível porque mux.Router implementa a interface http.Handler.
Principais métodos e funções do Gorilla Mux
\n\nVamos examinar os principais métodos da biblioteca. Cada método será acompanhado de uma descrição, parâmetros e um exemplo funcional.
\n\n1. mux.NewRouter()
\nO que faz: Cria uma nova instância do roteador. Este é o ponto de partida para todas as rotas.
\nParâmetros: Nenhum.
\nRetorna: Um ponteiro para mux.Router.
r := mux.NewRouter()\n// Agora r está pronto para definir rotas\n\n2. r.HandleFunc(path, handler)
\nO que faz: Registra uma função de tratamento (handler) para o caminho especificado. Esta é a principal forma de definir rotas.
\nPar
Também na biblioteca
Autorização e Autenticação em C# (.NET) — Guia Completo
Biblioteca cpp-httplib: Cliente OAuth 2.0 em C++ para aplicações web
Agendador de Tarefas Java: Quartz Scheduler — Guia Completo
GraphQL em C++: biblioteca cppgraphqlgen para criação de APIs