Un cliente HTTP en Go
Obtener y decodificar JSON con un timeout.
func fetchJSON(url string, out any) error {
client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("status %d", resp.StatusCode)
}
return json.NewDecoder(resp.Body).Decode(out)
}
Cómo funciona
- Un
http.ClientconTimeoutevita quedarse colgado. defer resp.Body.Close()siempre lo libera.json.NewDecoderdecodifica directo desde el stream.
Palabras clave y builtins usados aquí
anydefererrorfuncifreturnstring
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 311
- Tokens
- 88
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 48 segundos.
Paso 4 de 5 en HTTP; paso 19 de 26 en Biblioteca estándar y estructura del proyecto.