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 }
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!