Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membuat Permintaan POST Berkod URL Menggunakan `http.NewRequest(...)` Go?

Bagaimana untuk Membuat Permintaan POST Berkod URL Menggunakan `http.NewRequest(...)` Go?

Barbara Streisand
Barbara Streisandasal
2024-12-19 11:31:10560semak imbas

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

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn