chi 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 é chi e para que serve?

\n\n

chi é 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\n

Diferentemente do pacote padrão net/http, o chi oferece:

\n
    \n
  • Compatibilidade com net/http: chi implementa completamente a interface http.Handler, permitindo fácil integração com código Go existente e middleware.
  • \n
  • Roteamento baseado em contexto: chi utiliza context.Context para 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
\n\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\n

Instalação do chi

\n\n

Para 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\n
go get -u github.com/go-chi/chi/v5
\n\n

Apó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:

\n\n
import "github.com/go-chi/chi/v5"
\n\n

Também é comum instalar o pacote de middleware:

\n\n
go get -u github.com/go-chi/cors\ngo get -u github.com/go-chi/chi/v5/middleware
\n\n

Início rápido com exemplo de código

\n\n

Vamos criar um servidor HTTP simples que responde a requisições GET.

\n\n
package 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\n

Execute este código e abra o navegador no endereço http://localhost:3000/hello. Você verá a mensagem "Olá, chi!".

\n\n

Principais métodos e funções do chi

\n\n

Vamos analisar os principais métodos da biblioteca chi. Todos os exemplos assumem que você já criou um roteador r := chi.NewRouter().

\n\n

1. Get(pattern string, handlerFn http.HandlerFunc)

\n

O que faz: Registra um manipulador para o método HTTP GET no padrão de caminho especificado.

\n

Parâmetros:

\n
    \n
  • pattern — string do caminho (exemplo: /users, /users/{id}).
  • \n
  • handlerFn — função manipuladora, correspondente à assinatura http.HandlerFunc.
  • \n
\n

Exemplo:

\n
r.Get("/", func(w http.ResponseWriter, r *http.Request) {\n    w.Write([]byte("Página inicial"))\n})
\n\n

2. Post(pattern string, handlerFn http.HandlerFunc)

\n

O que faz: Registra um manipulador para o método HTTP POST.

\n

Parâmetros: Similar ao Get.

\n

Exemplo:

\n
r.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\n

3. Put(pattern string, handlerFn http.HandlerFunc)

\n

O que faz:

Recommendations