Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membuat Permintaan POST Berkod URL Menggunakan `http.NewRequest(...)` Go?
Buat Permintaan POST Berkod URL Menggunakan http.NewRequest(...)
Membina berdasarkan prinsip asas permintaan HTTP, pembangun selalunya memerlukan keupayaan untuk membina permintaan dengan ciri khusus, seperti yang mempunyai muatan POST berkod URL. Artikel ini akan menyelidiki butiran khusus untuk membuat permintaan sedemikian menggunakan kaedah http.NewRequest(...) serba boleh.
Secara tradisinya, data yang dikodkan URL disertakan dalam rentetan pertanyaan URL. Walau bagaimanapun, menggunakan kaedah http.NewRequest(...) membolehkan kawalan yang lebih besar ke atas pengurusan pengepala. Dalam senario ini, membiarkan isi permintaan kosong semasa menambahkan pertanyaan pada URL bukanlah pendekatan yang sesuai.
Penyelesaian terletak pada menyediakan muatan berkod URL sebagai rentetan melalui antara muka io.Reader, iaitu ditunjukkan dengan elegan dalam kod berikut:
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 }
Dengan memasukkan rentetan yang dikodkan URL dalam badan permintaan melalui strings.NewReader(), permintaan HTTP dikonfigurasikan dengan betul untuk menyampaikan muatan yang dimaksudkan. Pendekatan yang disemak ini menghapuskan ralat 400 BAD REQUEST dan memastikan API mentafsir data yang dihantar dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk Membuat Permintaan POST Berkod URL Menggunakan `http.NewRequest(...)` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!