Kosongkan Badan Permintaan dalam Gin/Golang
Apabila mengendalikan permintaan POST dengan Gin, anda mungkin kadangkala menghadapi isu di mana badan permintaan kelihatan kosong. Ini boleh mengecewakan, terutamanya jika anda mengharapkan untuk menerima data daripada pelanggan. Satu sebab biasa untuk isu ini ialah cuba mencetak kandungan secara terus.
Gin mewakili kandungan permintaan sebagai jenis antara muka ReadCloser. Walau bagaimanapun, mencetak nilai rentetan antara muka ini tidak akan mendedahkan kandungan badan sebenar.
Penyelesaian 1: Membaca dan Mencetak Rentetan
Untuk tujuan demonstrasi sahaja, anda boleh secara manual baca badan ke dalam rentetan dan kemudian cetaknya:
<code class="go">func events(c *gin.Context) { x, _ := ioutil.ReadAll(c.Request.Body) fmt.Printf("%s", string(x)) c.JSON(http.StatusOK, c) }</code>
Walau bagaimanapun, ini bukan pendekatan yang disyorkan kerana ia menggunakan kandungan badan.
Penyelesaian 2: Menggunakan Pengikat
Cara pilihan untuk mengakses badan permintaan dalam Gin adalah dengan menggunakan binding. Gin menyediakan pengikatan terbina dalam untuk format data biasa seperti JSON. Dengan mentakrifkan struct untuk mewakili data yang dijangkakan dan kemudian menggunakan c.Bind, anda boleh menghuraikan dan mengikat badan secara automatik pada struct anda:
<code class="go">type E struct { Events string } func events(c *gin.Context) { data := &E{} c.Bind(data) fmt.Println(data) c.JSON(http.StatusOK, c) }</code>
Pendekatan ini memastikan badan permintaan dihuraikan dengan betul dan diakses melalui struct yang anda tentukan.
Nota Tambahan
Membaca badan permintaan secara manual sebelum mengikatnya pada struct akan menggunakan kandungan badan. Ini bermakna bahawa panggilan seterusnya ke c.Bind akan gagal. Oleh itu, adalah penting untuk menggunakan sama ada teknik membaca rentetan untuk tujuan penyahpepijatan sahaja (tidak disyorkan) atau menggunakan binding untuk mengakses badan dengan cara yang konsisten.
Atas ialah kandungan terperinci Cara Mengendalikan Badan Permintaan Kosong Apabila Menggunakan Gin/Golang: Panduan untuk Teknik Pengikatan dan Nyahpepijat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!