Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menggunakan Semula Badan Permintaan dalam Pengendali Perisian Tengah HTTP Go-chi?

Bagaimanakah Saya Boleh Menggunakan Semula Badan Permintaan dalam Pengendali Perisian Tengah HTTP Go-chi?

Barbara Streisand
Lepaskan: 2024-12-20 13:32:09
asal
930 orang telah melayarinya

How Can I Reuse Request Bodies in Go-chi HTTP Middleware Handlers?

Menentukan Kebolehgunaan Badan Permintaan dalam Pengendali Perisian Tengah HTTP

Dalam senario ini, isu timbul apabila cuba menggunakan semula kaedah dalam yang lain dalam Go -chi penghala HTTP. Pengendali luar, Registration(), membaca badan permintaan menggunakan ioutil.ReadAll(r.Body), tidak meninggalkan data yang tersedia untuk pengendali dalam, Create(), untuk menghuraikan JSON daripada.

Penyelesaian : Memulihkan Badan Permintaan

Untuk menyelesaikan isu ini, laksanakan perkara berikut betulkan:

func Registration(w http.ResponseWriter, r *http.Request) {
    b, err := io.ReadAll(r.Body) 
    // ...other code
    r.Body = io.NopCloser(bytes.NewReader(b))
    user.Create(w, r)
}
Salin selepas log masuk

Begini cara kod ini menangani masalah:

  • io.ReadAll(r.Body): Membaca keseluruhan permintaan body.
  • io.NopCloser(bytes.NewReader(b)): Memulihkan kandungan permintaan dengan mencipta io.Reader daripada data yang dibaca sebelum ini.
  • r.Body = io.NopCloser(...): Menggantikan r.Body asal dengan yang dipulihkan body.

Dengan cara ini, pengendali dalaman boleh mengakses data JSON daripada badan permintaan tanpa menghadapi ralat "penghujung input JSON yang tidak dijangka".

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Semula Badan Permintaan dalam Pengendali Perisian Tengah HTTP Go-chi?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan