Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membaca Badan Permintaan Berbilang Kali dalam Go-Gin?

Bagaimana untuk Membaca Badan Permintaan Berbilang Kali dalam Go-Gin?

DDD
DDDasal
2024-12-26 08:26:11622semak imbas

How to Read a Request Body Multiple Times in Go-Gin?

Cara Membaca Request Body Berbilang Kali dalam Go-Gin

Apabila mengesahkan data permintaan, selalunya perlu mengekalkan badan permintaan asal untuk pemprosesan selanjutnya. Walau bagaimanapun, membaca kandungan beberapa kali boleh menyebabkan masalah.

Isu:

Kod berikut membaca badan permintaan untuk melaksanakan pengesahan tetapi gagal mengekalkannya untuk fungsi berikutnya panggilan:

func SignupValidator(c *gin.Context) {
    var bodyBytes []byte
    if c.Request.Body != nil {
        bodyBytes, _ = ioutil.ReadAll(c.Request.Body)
    }
    fmt.Println(string(bodyBytes)) // empty
    c.Next()
}

Penyelesaian:

Untuk mengakses badan permintaan beberapa kali, gunakan langkah berikut:

  1. Baca permintaan badan sekali dan simpannya dalam pembolehubah.
  2. Buat penimbal baharu dengan badan yang sama bait.
  3. Tetapkan badan permintaan kepada penimbal yang baru dibuat.
func SignupValidator(c *gin.Context) {
    byteBody, _ := ioutil.ReadAll(c.Request.Body)
    c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(byteBody))

    fmt.Println(string(byteBody)) // contains the request body

    c.Next()
}

Kini, panggilan fungsi seterusnya boleh mengakses data badan tanpa sebarang masalah.

Atas ialah kandungan terperinci Bagaimana untuk Membaca Badan Permintaan Berbilang Kali dalam Go-Gin?. 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