Golang HTTP-Anfragebehandlung

Beginner

This tutorial is from open-source community. Access the source code

Einführung

Dieses Labor zielt darauf ab, Ihre Fähigkeit zu testen, das net/http-Paket in Golang zum Senden von HTTP-Anfragen zu verwenden.

HTTP-Client

Sie müssen ein Programm schreiben, das einen HTTP GET-Anfrage an einen Server sendet und den HTTP-Antwortstatus sowie die ersten 5 Zeilen des Antwortkörpers ausgibt.

  • Das Programm sollte das net/http-Paket verwenden, um eine HTTP GET-Anfrage zu senden.
  • Das Programm sollte den HTTP-Antwortstatus ausgeben.
  • Das Programm sollte die ersten 5 Zeilen des Antwortkörpers ausgeben.
  • Das Programm sollte Fehler 优雅地 behandeln.
$ go run http-clients.go
Antwortstatus: 200 OK
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Go by Example</title>

Hier ist der vollständige Code:

// Die Go-Standardbibliothek bietet ausgezeichnete Unterstützung
// für HTTP-Clients und -Server im `net/http`-
// Paket. In diesem Beispiel verwenden wir es, um einfache
// HTTP-Anfragen zu senden.
package main

import (
    "bufio"
    "fmt"
    "net/http"
)

func main() {

    // Sende eine HTTP GET-Anfrage an einen Server. `http.Get` ist ein
    // bequemer Kurzweg um ein `http.Client`-
    // Objekt zu erstellen und seine `Get`-Methode aufzurufen; es verwendet das
    // `http.DefaultClient`-Objekt, das nützliche Standard-
    // Einstellungen hat.
    resp, err := http.Get("https://gobyexample.com")
    if err!= nil {
        panic(err)
    }
    defer resp.Body.Close()

    // Gib den HTTP-Antwortstatus aus.
    fmt.Println("Antwortstatus:", resp.Status)

    // Gib die ersten 5 Zeilen des Antwortkörpers aus.
    scanner := bufio.NewScanner(resp.Body)
    for i := 0; scanner.Scan() && i < 5; i++ {
        fmt.Println(scanner.Text())
    }

    if err := scanner.Err(); err!= nil {
        panic(err)
    }
}

Zusammenfassung

In diesem Labor haben Sie gelernt, wie Sie das net/http-Paket in Golang verwenden, um HTTP-Anfragen zu senden und Fehler zu behandeln.