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:
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!