Heim > Backend-Entwicklung > Golang > Wie erstelle ich eine URL-codierte POST-Anfrage mit „http.NewRequest(...)' von Go?

Wie erstelle ich eine URL-codierte POST-Anfrage mit „http.NewRequest(...)' von Go?

Barbara Streisand
Freigeben: 2024-12-19 11:31:10
Original
601 Leute haben es durchsucht

How to Make a URL-Encoded POST Request Using Go's `http.NewRequest(...)`?

Erstellen Sie eine URL-codierte POST-Anfrage mit http.NewRequest(...)

Aufbauend auf den Grundprinzipien von HTTP-Anfragen, Entwicklern erfordern oft die Möglichkeit, Anfragen mit bestimmten Merkmalen zu erstellen, beispielsweise solche mit einer URL-codierten POST-Nutzlast. Dieser Artikel befasst sich mit den Besonderheiten der Erstellung solcher Anfragen mithilfe der vielseitigen Methode http.NewRequest(...).

Traditionell sind URL-codierte Daten in der URL-Abfragezeichenfolge enthalten. Die Verwendung der Methode http.NewRequest(...) ermöglicht jedoch eine bessere Kontrolle über die Header-Verwaltung. In diesem Szenario ist es kein geeigneter Ansatz, den Anforderungstext leer zu lassen, während die Abfrage an die URL angehängt wird.

Die Lösung besteht darin, die URL-codierte Nutzlast als Zeichenfolge über die io.Reader-Schnittstelle bereitzustellen Dies wird im folgenden Code elegant demonstriert:

package main

import (
    "fmt"
    "net/http"
    "net/url"
    "strconv"
    "strings"
)

func main() {
    apiUrl := "https://api.com"
    resource := "/user/"
    data := url.Values{}
    data.Set("name", "foo")
    data.Set("surname", "bar")

    u, _ := url.ParseRequestURI(apiUrl)
    u.Path = resource
    urlStr := u.String() // "https://api.com/user/"

    client := &http.Client{}
    r, _ := http.NewRequest(http.MethodPost, urlStr, strings.NewReader(data.Encode())) // URL-encoded payload
    r.Header.Add("Authorization", "auth_token=\"XXXXXXX\"")
    r.Header.Add("Content-Type", "application/x-www-form-urlencoded")

    resp, _ := client.Do(r)
    fmt.Println(resp.Status) // Output: 200 OK
}
Nach dem Login kopieren

Durch die Einbindung der URL-codierten Zeichenfolge in den Anforderungstext über strings.NewReader() wird die HTTP-Anforderung ordnungsgemäß für die Zustellung konfiguriert vorgesehene Nutzlast. Dieser überarbeitete Ansatz eliminiert den 400 BAD REQUEST-Fehler und stellt sicher, dass die API die übertragenen Daten korrekt interpretiert.

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine URL-codierte POST-Anfrage mit „http.NewRequest(...)' von Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage