Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah aplikasi Go saya tidak mengendalikan kandungan permintaan HTTP dengan betul?

Mengapakah aplikasi Go saya tidak mengendalikan kandungan permintaan HTTP dengan betul?

PHPz
PHPzasal
2023-06-09 18:22:381212semak imbas

Dalam beberapa tahun kebelakangan ini, Go telah menjadi salah satu bahasa pengaturcaraan yang paling popular hari ini. Go terkenal dengan kesesuaian dan pemprosesan yang cekap berbanding dengan bahasa pengaturcaraan lain. Dalam bidang aplikasi web, populariti Go juga semakin berkembang. Walau bagaimanapun, satu masalah yang mungkin dihadapi oleh beberapa pemula ialah mengapa aplikasi Go saya tidak dapat mengendalikan isi permintaan HTTP dengan betul. Artikel ini akan menyelesaikan masalah ini untuk anda.

Pertama, mari kita lihat apakah isi kandungan permintaan HTTP. Badan permintaan HTTP ialah jujukan data yang dihantar selepas pengepala permintaan. Ia boleh termasuk apa-apa jenis data seperti muat naik fail, data borang, dsb. Secara amnya, kandungan permintaan HTTP perlu dihuraikan melalui penghurai badan. Dalam Go, penghurai badan disediakan oleh fungsi "Request.ParseForm()" dalam pakej "net/http".

Jadi, mengapa aplikasi Go anda tidak mengendalikan badan permintaan HTTP dengan betul? Jawapannya mudah: aplikasi anda tidak memanggil penghurai badan dengan betul. Sebelum menghuraikan kandungan permintaan HTTP, kami perlu memastikan pelayan telah membaca permintaan HTTP dengan betul. Ini biasanya dilakukan dengan memanggil kaedah "http.Request.Body.Read()". Selain itu, anda perlu memastikan bahawa medan Jenis Kandungan ditetapkan dengan betul dalam pengepala permintaan supaya aplikasi anda mengetahui cara menghuraikan kandungan permintaan dengan betul.

Mari kita lihat contoh. Katakan aplikasi kami menerima permintaan POST yang mengandungi data teks bernama "message". Aplikasi kami perlu membaca permintaan HTTP dengan betul dan menghuraikan nilai dalam medan "mesej".

Pertama, kita perlu memastikan bahawa medan Jenis Kandungan ditetapkan dengan betul dalam pengepala permintaan, contohnya:

Content-Type: application/x-www-form-urlencoded

Seterusnya, kita perlu menggunakan kod berikut untuk membaca dan menghuraikan badan permintaan HTTP:

func handler(w http.ResponseWriter, r *http.Request) {
    r.ParseForm()
    message := r.FormValue("message")
    fmt.Fprintf(w, "Message received: %s
", message)
}

Dalam contoh di atas, fungsi "r.ParseForm()" menghuraikan kandungan permintaan HTTP ke dalam peta kunci dan nilai. Kita boleh mendapatkan nilai dengan memanggil fungsi "r.FormValue()". Akhir sekali, kita boleh menggunakan fungsi "fmt.Fprintf()" untuk mengembalikan nilai mesej.

Sila ambil perhatian bahawa dalam Go anda tidak boleh menghuraikan kandungan permintaan HTTP beberapa kali. Jika anda menghuraikan permintaan HTTP merentas berbilang pengendali, anda mesti menggunakan data dalam "r.Body" untuk replikasi.

Akhir sekali, anda disyorkan agar menggunakan rangka kerja seperti Gorilla mux semasa menulis aplikasi Go, yang menyediakan penghalaan yang lebih baik dan keupayaan pengendalian permintaan HTTP, menjadikannya lebih mudah untuk membina aplikasi web berprestasi tinggi.

Ringkasnya, pengendalian kandungan permintaan HTTP dengan betul adalah penting untuk fungsi aplikasi web yang betul. Dengan mengikuti nasihat dan kod contoh yang diberikan dalam artikel ini, anda boleh memastikan bahawa aplikasi Go anda membaca dan menghuraikan kandungan permintaan HTTP dengan betul.

Atas ialah kandungan terperinci Mengapakah aplikasi Go saya tidak mengendalikan kandungan permintaan HTTP dengan betul?. 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