Effettuare richieste HTTP
GET e POST con http.NewRequest e http.DefaultClient
Effettuare richieste HTTP è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.
http.Get come scorciatoia
http.Get(url) è il modo più semplice per effettuare una richiesta GET. Chiuda sempre il corpo della risposta.
resp, err := http.Get("https://api.example.com/users")
if err != nil { return err }
defer resp.Body.Close()http.DefaultClient
http.Get utilizza il DefaultClient a livello di pacchetto. In produzione, crei un client personalizzato con i timeout configurati.
client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.Get(url)http.NewRequest per il controllo completo
Utilizzi http.NewRequest per impostare metodo, intestazioni e corpo:
req, err := http.NewRequestWithContext(ctx, "POST", url, body)
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)Corpo della richiesta
Passi il corpo della richiesta tramite un io.Reader. Per i payload JSON, utilizzi bytes.NewBuffer(data) o strings.NewReader.
data, _ := json.Marshal(payload)
req, _ := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(data))Controllare lo stato della risposta
Controlli sempre il codice di stato HTTP: un 4xx/5xx non viene restituito come errore Go per impostazione predefinita.
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("unexpected status: %d", resp.StatusCode)
}Decodificare la risposta JSON
Decodifichi il corpo della risposta con json.Decoder per evitare di leggerlo prima interamente in memoria:
var result APIResponse
json.NewDecoder(resp.Body).Decode(&result)Parametri di query
Costruisca le stringhe di query con url.Values e le associ all'URL:
params := url.Values{}
params.Set("page", "1")
params.Set("limit", "20")
reqURL := baseURL + "?" + params.Encode()Client.Do e transport personalizzato
Avvolga http.DefaultTransport per aggiungere la logica di retry, TLS personalizzato o impostazioni proxy senza perdere il comportamento predefinito.
Il corpo della risposta deve essere chiuso
Se non si chiude il corpo della risposta, si perde la connessione TCP sottostante. Utilizzi sempre defer resp.Body.Close(), anche per le risposte con errori.
Seguire i reindirizzamenti
Il client predefinito segue fino a 10 reindirizzamenti. Imposti client.CheckRedirect per personalizzare o disabilitare il seguimento dei reindirizzamenti.
Impostare User-Agent
Imposti un'intestazione User-Agent descrittiva, in modo che i log del server possano identificare il client:
req.Header.Set("User-Agent", "myapp/1.0 (+https://myapp.com)")Verifica rapida
Perché dovrebbe chiudere sempre il corpo della risposta HTTP?
Riepilogo: effettuare richieste HTTP
Punti chiave:
- Eseguire sempre defer resp.Body.Close()
- Creare un http.Client personalizzato con Timeout per la produzione
- Utilizzare http.NewRequestWithContext per il contesto e le intestazioni personalizzate
- Controllare resp.StatusCode: gli errori HTTP non sono errori Go
Domande Frequenti
La lezione «Effettuare richieste HTTP» è gratuita?
Sì — il testo completo di «Effettuare richieste HTTP» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.
Cosa imparerò in «Effettuare richieste HTTP»?
GET e POST con http.NewRequest e http.DefaultClient Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Go Academy?
Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Effettuare richieste HTTP»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Go Academy?
Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Effettuare richieste HTTP
- Impostare timeout e intestazioni
- Decodificare risposte JSON
- Gestione degli errori e logica dei tentativi