Realización de solicitudes HTTP
GET y POST con http.NewRequest y http.DefaultClient
Realización de solicitudes HTTP es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 1 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.
Atajo http.Get
http.Get(url) es la forma más sencilla de realizar una solicitud GET. Cierre siempre el cuerpo de la respuesta.
resp, err := http.Get("https://api.example.com/users")
if err != nil { return err }
defer resp.Body.Close()http.DefaultClient
http.Get utiliza el DefaultClient del paquete. En producción, cree un cliente personalizado con tiempos de espera configurados.
client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.Get(url)http.NewRequest para un control total
Use http.NewRequest para establecer el método, las cabeceras y el cuerpo:
req, err := http.NewRequestWithContext(ctx, "POST", url, body)
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)Cuerpo de la solicitud
Pase el cuerpo de una solicitud mediante un io.Reader. Para cargas útiles JSON, use bytes.NewBuffer(data) o strings.NewReader.
data, _ := json.Marshal(payload)
req, _ := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(data))Comprobar el estado de la respuesta
Compruebe siempre el código de estado HTTP: un 4xx/5xx no se devuelve como un error de Go de forma predeterminada.
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("unexpected status: %d", resp.StatusCode)
}Decodificar la respuesta JSON
Decodifique el cuerpo de la respuesta con json.Decoder para evitar leerlo por completo en memoria primero:
var result APIResponse
json.NewDecoder(resp.Body).Decode(&result)Parámetros de consulta
Construya cadenas de consulta con url.Values y añádalas a la URL:
params := url.Values{}
params.Set("page", "1")
params.Set("limit", "20")
reqURL := baseURL + "?" + params.Encode()Client.Do y transporte personalizado
Envuelva http.DefaultTransport para añadir lógica de reintento, TLS personalizado o configuración de proxy sin perder el comportamiento predeterminado.
Es necesario cerrar el cuerpo de la respuesta
No cerrar el cuerpo de la respuesta provoca una fuga de la conexión TCP subyacente. Use siempre defer resp.Body.Close(), incluso para las respuestas de error.
Seguir redirecciones
El cliente predeterminado sigue hasta 10 redirecciones. Establezca client.CheckRedirect para personalizar o desactivar el seguimiento de redirecciones.
Establecer User-Agent
Establezca una cabecera User-Agent descriptiva para que los registros del servidor puedan identificar su cliente:
req.Header.Set("User-Agent", "myapp/1.0 (+https://myapp.com)")Comprobación rápida
¿Por qué debería cerrar siempre el cuerpo de la respuesta HTTP?
Resumen: realizar solicitudes HTTP
Puntos clave:
- Use siempre defer resp.Body.Close()
- Cree un http.Client personalizado con Timeout para producción
- Use http.NewRequestWithContext para el contexto y las cabeceras personalizadas
- Compruebe resp.StatusCode: los errores HTTP no son errores de Go
Preguntas frecuentes
¿La lección «Realización de solicitudes HTTP» es gratis?
Sí — el texto completo de «Realización de solicitudes HTTP» 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 «Realización de solicitudes HTTP»?
GET y POST con http.NewRequest y http.DefaultClient 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 1 de 4.
¿Cuánto tiempo toma la lección «Realización de solicitudes HTTP»?
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