Fundamentos de Net HTTP
Idiomas de servidor e cliente HTTP integrados. Os resultados aparecem na mesma seção de código: comentários // na mesma linha quando curtos, blocos // de várias linhas abaixo do exemplo quando não.
Busque em todas as páginas da documentação
Idiomas de servidor e cliente HTTP integrados. Os resultados aparecem na mesma seção de código: comentários // na mesma linha quando curtos, blocos // de várias linhas abaixo do exemplo quando não.
Registra um manipulador de caminho no DefaultServeMux.
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
_, _ = w.Write([]byte("ok"))
})
// GET /health -> okServidor explícito para timeouts.
srv := &http.Server{
Addr: ":8080",
ReadHeaderTimeout: 5 * time.Second,
}
// err := srv.ListenAndServe()Requisições de saída com contexto.
// req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
// res, err := http.DefaultClient.Do(req)
// defer res.Body.Close()Envolve um Handler para comportamento transversal.
func withLog(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
next.ServeHTTP(w, r)
})
}Decodifica e codifica corpos JSON.
// json.NewDecoder(r.Body).Decode(&in)
// json.NewEncoder(w).Encode(out)Padrões de método + caminho no ServeMux (Go 1.22+).
// mux.HandleFunc("GET /items/{id}", h)
// id := r.PathValue("id")Define cabeçalhos de resposta antes de escrever.
// w.Header().Set("Content-Type", "application/json")
// w.WriteHeader(http.StatusCreated)Analisa campos de consulta e formulário.
// _ = r.ParseForm()
// q := r.FormValue("q")Lê e escreve cookies.
// http.SetCookie(w, &http.Cookie{Name: "s", Value: "x", Path: "/"})Auxiliar de redirecionamento do cliente.
// http.Redirect(w, r, "/login", http.StatusFound)Serve arquivos estáticos.
// http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))Duração limitada do manipulador.
// http.TimeoutHandler(h, 2*time.Second, "timeout")Testa manipuladores unitariamente com httptest.
// rr := httptest.NewRecorder()
// h.ServeHTTP(rr, req)
// rr.Code == 200Sempre feche os corpos de resposta do cliente.
// defer res.Body.Close()Encerramento gracioso com contexto.
// _ = srv.Shutdown(ctx)Versões da Stack: Go 1.26.x · chi/gin/echo mais recente (verificar na compilação)
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026