Mengapa Badan Permintaan Kosong dalam API Gin/Go saya?

DDD
Lepaskan: 2024-10-31 01:31:29
asal
644 orang telah melayarinya

Why is the Request Body Empty in my Gin/Go API?

Menyelesaikan Masalah Badan Permintaan Kosong dalam Rangka Kerja Gin/Go

Apabila membangunkan API REST menggunakan Gin dan Go, adalah perkara biasa untuk menghadapi isu badan permintaan kosong. Di sini kami menyelidiki sebab di sebalik isu ini dan meneroka penyelesaian untuk menanganinya.

Punca: Mencetak Badan Permintaan Secara Terus

Apabila anda mencetak terus badan permintaan menggunakan fmt.Printf("%s" , c.Request.Body), anda tidak mengekstrak nilai badan sebenar. c.Request.Body ialah jenis ReadCloser, yang menjadikannya antara muka yang mewakili aliran data yang boleh dibaca dan boleh ditutup.

Penyelesaian 1: Baca Badan ke Rentetan (Tujuan Pembelajaran)

Untuk tujuan ujian , anda boleh membaca badan permintaan ke dalam rentetan dan mencetaknya:

<code class="go">x, _ := ioutil.ReadAll(c.Request.Body)
fmt.Printf("%s", string(x))</code>
Salin selepas log masuk

Nota: Kaedah ini hanya untuk tujuan pembelajaran dan demonstrasi. Ia bukan penyelesaian praktikal untuk menghuraikan badan permintaan.

Penyelesaian 2: Gunakan Gin Binding

Cara yang lebih mantap untuk mengakses badan permintaan adalah melalui ciri pengikatan Gin. Ini membolehkan anda menentukan struktur data yang akan dihuraikan dan diisi secara automatik daripada badan permintaan:

<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>
Salin selepas log masuk

Dengan menggunakan kaedah Bind(), Gin akan mengisi struct E dengan data daripada badan permintaan , membolehkan anda mengakses parameter permintaan dengan mudah.

Pertimbangan Tambahan

Adalah penting untuk mengelakkan membaca badan permintaan secara terus (menggunakan kaedah pertama) sebelum menggunakan mekanisme pengikatan Gin. Ini boleh menyebabkan konflik dan penghuraian yang salah.

Atas ialah kandungan terperinci Mengapa Badan Permintaan Kosong dalam API Gin/Go saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan