HTTP-Anfragen senden
GET und POST mit http.NewRequest und http.DefaultClient
HTTP-Anfragen senden ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Kurzform mit http.Get
http.Get(url) ist die einfachste Möglichkeit, eine GET-Anfrage zu stellen. Schließen Sie den Response-Body immer.
resp, err := http.Get("https://api.example.com/users")
if err != nil { return err }
defer resp.Body.Close()http.DefaultClient
http.Get verwendet den paketweiten DefaultClient. Erstellen Sie für den Produktionseinsatz einen benutzerdefinierten Client mit gesetzten Zeitlimits.
client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.Get(url)http.NewRequest für vollständige Kontrolle
Verwenden Sie http.NewRequest, um Methode, Header und Body festzulegen:
req, err := http.NewRequestWithContext(ctx, "POST", url, body)
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)Anfrage-Body
Übergeben Sie einen Anfrage-Body über einen io.Reader. Verwenden Sie für JSON-Payloads bytes.NewBuffer(data) oder strings.NewReader.
data, _ := json.Marshal(payload)
req, _ := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(data))Antwortstatus prüfen
Prüfen Sie immer den HTTP-Statuscode – ein 4xx/5xx wird standardmäßig nicht als Go-Fehler zurückgegeben.
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("unexpected status: %d", resp.StatusCode)
}JSON-Antwort decodieren
Decodieren Sie den Response-Body mit json.Decoder, damit er nicht zuerst vollständig in den Speicher gelesen werden muss:
var result APIResponse
json.NewDecoder(resp.Body).Decode(&result)Query-Parameter
Erstellen Sie Query-Strings mit url.Values und hängen Sie sie an die URL an:
params := url.Values{}
params.Set("page", "1")
params.Set("limit", "20")
reqURL := baseURL + "?" + params.Encode()Client.Do und benutzerdefinierter Transport
Umschließen Sie http.DefaultTransport, um Wiederholungslogik, benutzerdefiniertes TLS oder Proxy-Einstellungen hinzuzufügen, ohne das Standardverhalten zu verlieren.
Response-Body muss geschlossen werden
Wenn der Response-Body nicht geschlossen wird, bleibt die zugrunde liegende TCP-Verbindung belegt. Verwenden Sie immer defer resp.Body.Close(), auch bei Fehlerantworten.
Weiterleitungen folgen
Der Standardclient folgt bis zu 10 Weiterleitungen. Setzen Sie client.CheckRedirect, um das Folgen von Weiterleitungen anzupassen oder zu deaktivieren.
User-Agent setzen
Setzen Sie einen aussagekräftigen User-Agent-Header, damit Server-Logs Ihren Client identifizieren können:
req.Header.Set("User-Agent", "myapp/1.0 (+https://myapp.com)")Kurzer Test
Warum sollten Sie den HTTP-Response-Body immer schließen?
Zusammenfassung: HTTP-Anfragen stellen
Wichtige Punkte:
- Immer defer resp.Body.Close() verwenden
- Für den Produktionseinsatz einen benutzerdefinierten http.Client mit Timeout erstellen
- http.NewRequestWithContext für Context und benutzerdefinierte Header verwenden
- resp.StatusCode prüfen – HTTP-Fehler sind keine Go-Fehler
Häufig gestellte Fragen
Ist die Lektion „HTTP-Anfragen senden“ kostenlos?
Ja — der vollständige Text von „HTTP-Anfragen senden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „HTTP-Anfragen senden“?
GET und POST mit http.NewRequest und http.DefaultClient Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „HTTP-Anfragen senden“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- HTTP-Anfragen senden
- Timeouts und Header festlegen
- JSON-Antworten dekodieren
- Fehlerbehandlung und Wiederholungslogik