Heim > Backend-Entwicklung > Golang > Wie sende ich eine URL-codierte POST-Anfrage ordnungsgemäß mit http.NewRequest()?

Wie sende ich eine URL-codierte POST-Anfrage ordnungsgemäß mit http.NewRequest()?

Mary-Kate Olsen
Freigeben: 2024-12-24 11:35:17
Original
701 Leute haben es durchsucht

How to Properly Send a URL-Encoded POST Request using http.NewRequest()?

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

In diesem Zusammenhang beabsichtigen Sie, einen POST zu senden Anfrage über eine vordefinierte API mit einer Nutzlast, die als application/x-www-form-urlencoded-Inhalt formatiert ist. Anstatt sich auf Methoden wie Request.ParseForm zu verlassen, wollen wir uns eingehender mit dem bevorzugten Ansatz mithilfe von http.NewRequest(...) befassen.

Um Anforderungsheader effizient zu verwalten, haben Sie sich für http.NewRequest(method, urlStr string) entschieden , body io.Reader), um Ihre Anfrage zu erstellen. Obwohl diese Strategie im Allgemeinen sinnvoll ist, liegt der entscheidende Punkt im Umgang mit der Nutzlast. Gemäß der HTTP-Spezifikation sollten URL-codierte Nutzdaten über den Body-Parameter bereitgestellt und nicht direkt an die URL angehängt werden.

Um dieses Problem zu beheben, sollten Sie daher Ihren Code so ändern, dass er Ihre URL-codierten Nutzdaten enthält im Körperbereich. Hier ist ein Beispiel:

package main

import (
    "fmt"
    "net/http"
    "net/url"
    "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)
}
Nach dem Login kopieren

Mit dieser Änderung sollte Ihr Code nun korrekt eine URL-codierte Nutzlast im Textkörper senden, wie von der API gefordert. Folglich sollten Sie mit einer erfolgreichen Antwort rechnen, was durch einen resp.Status von 200 OK angezeigt wird.

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

Quelle:php.cn
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