Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menghantar Permintaan POST Berkod URL dengan Betul menggunakan http.NewRequest()?

Bagaimana untuk Menghantar Permintaan POST Berkod URL dengan Betul menggunakan http.NewRequest()?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-24 11:35:17703semak imbas

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

Buat Permintaan POST berkod URL dengan http.NewRequest(...)

Dalam konteks ini, anda berhasrat untuk menghantar POST permintaan melalui API yang dipratentukan dengan muatan yang diformatkan sebagai kandungan aplikasi/x-www-form-urlencoded. Daripada bergantung pada kaedah seperti Request.ParseForm, mari kita mendalami pendekatan pilihan menggunakan http.NewRequest(...).

Untuk mengurus pengepala permintaan dengan cekap, anda memilih http.NewRequest(method, urlStr string , body io.Reader) untuk membuat permintaan anda. Walaupun strategi ini secara amnya baik, pengawasan utama terletak pada pengendalian muatan. Mengikut spesifikasi HTTP, muatan berkod URL hendaklah disediakan melalui parameter badan, tidak dilampirkan terus pada URL.

Oleh itu, untuk membetulkan isu ini, anda harus mengubah suai kod anda untuk memasukkan muatan berkod URL anda di bahagian badan. Berikut ialah contoh:

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

Dengan pengubahsuaian ini, kod anda kini sepatutnya menghantar muatan berkod URL dengan betul dalam badan seperti yang diperlukan oleh API. Oleh itu, anda harus mengharapkan respons yang berjaya, seperti yang ditunjukkan oleh respons.Status 200 OK.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Permintaan POST Berkod URL dengan Betul menggunakan http.NewRequest()?. 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