Configuración de tiempos de espera y headers
Tiempos de espera del cliente, headers personalizados y tokens de autenticación
Configuración de tiempos de espera y headers es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
Tiempo de espera a nivel de cliente
Establezca http.Client.Timeout para limitar el tiempo total de la solicitud y la respuesta. Es el tiempo de espera más sencillo de configurar.
client := &http.Client{Timeout: 10 * time.Second}Tiempos de espera a nivel de transporte
Ajuste con precisión los tiempos de espera del establecimiento de la conexión y del protocolo de enlace TLS mediante http.Transport:
t := &http.Transport{
DialContext: (&net.Dialer{
Timeout: 5 * time.Second,
KeepAlive: 30 * time.Second,
}).DialContext,
TLSHandshakeTimeout: 5 * time.Second,
ResponseHeaderTimeout: 5 * time.Second,
}
client := &http.Client{Transport: t, Timeout: 30 * time.Second}Tiempo de espera basado en el contexto
Los tiempos de espera del contexto se aplican a cada solicitud y se propagan a las llamadas posteriores. Cancelan la solicitud cuando vence el plazo.
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)Establecer cabeceras de solicitud
Añada cabeceras a una solicitud con req.Header.Set (reemplaza) o req.Header.Add (añade):
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Accept", "application/json")
req.Header.Set("X-Request-ID", requestID)Cabeceras habituales
Content-Type para los cuerpos de las solicitudes; Accept para el formato de respuesta deseado; Authorization para los tokens de autenticación; User-Agent para identificar al cliente.
Leer las cabeceras de respuesta
Lea las cabeceras de respuesta mediante resp.Header.Get(key):
contentType := resp.Header.Get("Content-Type")
retryAfter := resp.Header.Get("Retry-After")Tiempo de espera de conexiones inactivas
Establezca IdleConnTimeout en el transporte para cerrar las conexiones inactivas y evitar que se acumulen cuando disminuya el tráfico.
t.IdleConnTimeout = 90 * time.Second
t.MaxIdleConnsPerHost = 10Configuración de TLS
Personalice TLS (versión mínima y certificados de cliente) mediante tls.Config en el transporte:
t.TLSClientConfig = &tls.Config{MinVersion: tls.VersionTLS12}Detectar errores de tiempo de espera
Diferencie los errores de tiempo de espera de los errores de red mediante errors.As:
var urlErr *url.Error
if errors.As(err, &urlErr) && urlErr.Timeout() {
// handle timeout
}Tiempo de espera por solicitud frente al del cliente
Client.Timeout se aplica a todas las solicitudes. Un tiempo de espera del contexto se aplica a cada solicitud y puede ser más corto que el tiempo de espera del cliente. Ambos se respetan: se aplica el más corto.
Desactivar keep-alive
Establezca DisableKeepAlives: true en el transporte para programas de corta duración que abren pocas conexiones y evitar así la sobrecarga del agrupamiento de conexiones.
Comprobación rápida
Cuando se establecen tanto http.Client.Timeout como un tiempo de espera de contexto, ¿cuál tiene efecto?
Resumen: tiempos de espera y encabezados
Puntos clave:
- client.Timeout: tiempo de espera total por solicitud
- context.WithTimeout: tiempo de espera cancelable y propagable
- req.Header.Set para encabezados personalizados
- Transport para tiempos de espera detallados de TLS, conexión e inactividad
Preguntas frecuentes
¿La lección «Configuración de tiempos de espera y headers» es gratis?
Sí — el texto completo de «Configuración de tiempos de espera y headers» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Configuración de tiempos de espera y headers»?
Tiempos de espera del cliente, headers personalizados y tokens de autenticación Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Configuración de tiempos de espera y headers»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Realización de solicitudes HTTP
- Configuración de tiempos de espera y headers
- Decodificación de respuestas JSON
- Gestión de errores y lógica de reintentos