O que é chi e para que serve?
\n\nchi é um roteador HTTP leve, de alto desempenho e idiomático para a linguagem de programação Go. Ele foi criado para o desenvolvimento de aplicações web e APIs, fornecendo aos desenvolvedores uma ferramenta poderosa e flexível para roteamento de requisições HTTP.
\n\nDiferentemente do pacote padrão net/http, o chi oferece:
- \n
- Compatibilidade com
net/http: chi implementa completamente a interfacehttp.Handler, permitindo fácil integração com código Go existente e middleware. \n - Roteamento baseado em contexto: chi utiliza
context.Contextpara passar parâmetros de rota (por exemplo, ID do usuário) entre middleware e manipuladores. \n - Rotas aninhadas (Subrouters): Permite agrupar rotas em blocos lógicos (por exemplo,
/api/v1/users). \n - Agrupamento de middleware: É possível aplicar middleware tanto a todo o roteador quanto a grupos específicos de rotas. \n
- Suporte embutido para CORS, logging, compressão e outras tarefas comuns. \n
chi é ideal para criar APIs REST, microsserviços e qualquer aplicação web que exija uma arquitetura limpa, performática e facilmente testável.
\n\nInstalação do chi
\n\nPara instalar o chi, utilize o gerenciador de pacotes padrão do Go. Certifique-se de ter o Go instalado (versão 1.14 ou superior).
\n\ngo get -u github.com/go-chi/chi/v5\n\nApós executar este comando, a biblioteca será adicionada ao seu arquivo go.mod. Se você estiver usando Go Modules (recomendado), a importação será assim:
import "github.com/go-chi/chi/v5"\n\nTambém é comum instalar o pacote de middleware:
\n\ngo get -u github.com/go-chi/cors\ngo get -u github.com/go-chi/chi/v5/middleware\n\nInício rápido com exemplo de código
\n\nVamos criar um servidor HTTP simples que responde a requisições GET.
\n\npackage main\n\nimport (\n "fmt"\n "net/http"\n\n "github.com/go-chi/chi/v5"\n)\n\nfunc main() {\n r := chi.NewRouter()\n\n // Define a rota\n r.Get("/hello", func(w http.ResponseWriter, r *http.Request) {\n fmt.Fprintf(w, "Olá, chi!")\n })\n\n // Inicia o servidor\n http.ListenAndServe(":3000", r)\n}\n\nExecute este código e abra o navegador no endereço http://localhost:3000/hello. Você verá a mensagem "Olá, chi!".
Principais métodos e funções do chi
\n\nVamos analisar os principais métodos da biblioteca chi. Todos os exemplos assumem que você já criou um roteador r := chi.NewRouter().
1. Get(pattern string, handlerFn http.HandlerFunc)
\nO que faz: Registra um manipulador para o método HTTP GET no padrão de caminho especificado.
\nParâmetros:
\n- \n
pattern— string do caminho (exemplo:/users,/users/{id}). \n handlerFn— função manipuladora, correspondente à assinaturahttp.HandlerFunc. \n
Exemplo:
\nr.Get("/", func(w http.ResponseWriter, r *http.Request) {\n w.Write([]byte("Página inicial"))\n})\n\n2. Post(pattern string, handlerFn http.HandlerFunc)
\nO que faz: Registra um manipulador para o método HTTP POST.
\nParâmetros: Similar ao Get.
Exemplo:
\nr.Post("/users", func(w http.ResponseWriter, r *http.Request) {\n // Lógica de criação de usuário\n w.WriteHeader(http.StatusCreated)\n w.Write([]byte("Usuário criado"))\n})\n\n3. Put(pattern string, handlerFn http.HandlerFunc)
\nO que faz:
Também na biblioteca
Accompanist para Kotlin: guia completo com exemplos práticos
Processamento de Imagens em Kotlin: redimensionar e cortar com a biblioteca ImageMagick
BenchmarkDotNet para C# (.NET): guia completo com exemplos
Envio de SMS em TypeScript: Bibliotecas de API e Integração
Trabalho com Markdown em C++: bibliotecas, parsers e ferramentas