Fundamentos de Net HTTP
Idioms integrados de servidor y cliente HTTP. Los resultados aparecen en la misma sección de código: comentarios // en la misma línea cuando son cortos, bloques // multilínea debajo de la muestra cuando no lo son.
Busca en todas las páginas de la documentación
Idioms integrados de servidor y cliente HTTP. Los resultados aparecen en la misma sección de código: comentarios // en la misma línea cuando son cortos, bloques // multilínea debajo de la muestra cuando no lo son.
Registra un manejador de ruta en 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()Solicitudes salientes con contexto.
// req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
// res, err := http.DefaultClient.Do(req)
// defer res.Body.Close()Envuelve un manejador para comportamiento transversal.
func withLog(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
next.ServeHTTP(w, r)
})
}Decodifica y codifica cuerpos JSON.
// json.NewDecoder(r.Body).Decode(&in)
// json.NewEncoder(w).Encode(out)Patrones de método + ruta en ServeMux (Go 1.22+).
// mux.HandleFunc("GET /items/{id}", h)
// id := r.PathValue("id")Establece encabezados de respuesta antes de escribir.
// w.Header().Set("Content-Type", "application/json")
// w.WriteHeader(http.StatusCreated)Analiza campos de consulta y formulario.
// _ = r.ParseForm()
// q := r.FormValue("q")Lee y escribe cookies.
// http.SetCookie(w, &http.Cookie{Name: "s", Value: "x", Path: "/"})Ayudante de redirección de cliente.
// http.Redirect(w, r, "/login", http.StatusFound)Sirve archivos estáticos.
// http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))Duración limitada del manejador.
// http.TimeoutHandler(h, 2*time.Second, "timeout")Prueba unitaria de manejadores con httptest.
// rr := httptest.NewRecorder()
// h.ServeHTTP(rr, req)
// rr.Code == 200Siempre cierra los cuerpos de respuesta del cliente.
// defer res.Body.Close()Apagado elegante con contexto.
// _ = srv.Shutdown(ctx)Versiones de la pila: Go 1.26.x · chi/gin/echo latest (verificar en la compilación)
Revisado por Chris St. John·Última actualización: 19 jul 2026