Heim >Backend-Entwicklung >Golang >golang http-Anfrage

golang http-Anfrage

王林
王林Original
2023-05-27 13:16:391502Durchsuche

Go-Sprache ist eine schnelle, zuverlässige und prägnante Programmiersprache, die für ihre hervorragenden Parallelitäts- und Netzwerkprogrammierfunktionen beliebt ist. Bei der Netzwerkprogrammierung sind HTTP-Anfragen ein unvermeidlicher Teil des Programmentwicklungsprozesses. In diesem Artikel wird erläutert, wie HTTP-Anfragen in der Go-Sprache gestellt werden.

1. Import und Net/http-Paket

HTTP-Anfrage und -Antwort werden in der Go-Sprache über das Net/http-Paket implementiert. Importieren Sie das Paket:

import (
    "net/http"
)

2. GET-Anfrage

Der folgende Code zeigt, wie Sie mit http.Get() eine GET-Anfrage senden:

resp, err := http.Get("https://www.google.com")
if err != nil {
    //处理错误
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    //处理错误
}

fmt.Println(string(body))

Wenn dieser Code ausgeführt wird, wird er an https://www gesendet .google.com GET-Anfrage und gibt den HTML-Quellcode der Website zurück. Die Funktion Get() gibt einen Zeiger vom Typ *http.Response zurück, der alle HTTP-Antwortinformationen enthält (einschließlich Statuscode, Antwortheader, Antworttext usw.). Wir verwenden die Defer-Anweisung, um sicherzustellen, dass der Antworttext geschlossen wird, wenn die Funktion zurückkehrt.

3. POST-Anfrage

Der folgende Code zeigt, wie die Methode http.Post() zum Senden einer POST-Anfrage verwendet wird:

values := map[string]string{
    "name":  "test",
    "email": "test@gmail.com",
}

data := url.Values{}
for key, value := range values {
    data.Set(key, value)
}

url := "https://example.com/api"
req, err := http.NewRequest("POST", url, strings.NewReader(data.Encode()))
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

if err != nil {
    //处理错误
}

client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
    //处理错误
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    //处理错误
}

fmt.Println(string(body))

Auf diese Weise verwenden wir die Funktion http.NewRequest(), um eine POST-Anfrage zu erstellen. und legen Sie dann den Anforderungsheader und den Anforderungstext fest. Beim Senden einer Anfrage verwenden wir das Objekt htt.Client() und senden die Anfrage an die angegebene URL. Wenn die Ausführung des Codes abgeschlossen ist, unabhängig von Erfolg oder Misserfolg, schließen Sie unbedingt http.Response.Body.

4. PUT-Anfrage

Ähnlich wie eine POST-Anfrage kann eine PUT-Anfrage auch mit http.NewRequest() in der Go-Sprache gesendet werden:

values := "{"name":"test","email":"test@gmail.com"}"
url := "https://example.com/api"
req, err := http.NewRequest("PUT", url, bytes.NewBuffer([]byte(values)))

if err != nil {
    //处理错误
}

client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
    //处理错误
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    //处理错误
}

fmt.Println(string(body))

Die Funktion bytes.NewBuffer() wird hier verwendet, um Variablenwerte in a umzuwandeln buffer und fügen Sie es in Request.Body ein. 5. DELETE-Anfrage Beachten Sie, dass bei der Übergabe von Parametern an die URL eine URL-Codierung erforderlich ist, um sicherzustellen, dass die Parameterwerte korrekt übergeben werden.

Fazit

HTTP-Anfragen und -Antworten in der Go-Sprache werden über das Net/http-Paket implementiert. In diesem Artikel wird beschrieben, wie Sie dieses Paket zum Senden von GET-, POST-, PUT- und DELETE-Anfragen verwenden und wie Sie mit den Ergebnissen der Antworten umgehen. HTTP ist die Grundlage moderner Webanwendungen. Wenn Sie dies verstehen, können Sie Ihre Anwendung auch so erweitern, dass sie HTTP-Anfragen und -Antworten unterstützt.

Das obige ist der detaillierte Inhalt vongolang http-Anfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Golang-Zitat-FluchtNächster Artikel:Golang-Zitat-Flucht