Rumah >pembangunan bahagian belakang >Golang >Bagaimana Menghuraikan Permintaan dan Respons HTTP daripada Fail Teks dalam Go?
Menghuraikan Permintaan dan Respons HTTP daripada Fail Teks dalam Go
Pengenalan
Soalan ini memfokuskan pada penghuraian fail teks yang mengandungi strim permintaan dan respons HTTP ke dalam kepingan Go bagi struktur Sambungan. Setiap struct Sambungan termasuk permintaan dan respons HTTP.
Garis Masalah
Memandangkan fail teks yang mengandungi permintaan dan respons HTTP, tugasnya adalah untuk menghuraikannya menjadi []Kepingan Sambungan. Fungsi http.ReadRequest boleh digunakan untuk menghuraikan permintaan. Walau bagaimanapun, tiada fungsi terbina dalam untuk menghuraikan respons.
Pelaksanaan
Penyelesaian melibatkan langkah berikut:
Penciptaan Pembaca Buffer:
buf := bufio.NewReader(r)
di mana r ialah io.Reader contoh yang mewakili fail teks.
Penghuraian Berulang:
for { req, err := http.ReadRequest(buf)
a. Gunakan http.ReadRequest untuk menghuraikan permintaan seterusnya dalam strim.
b. Semak untuk EOF (err == io.EOF). Jika tercapai, keluar dari gelung.
c. Jika ralat berlaku, kembalikan strim yang dihuraikan dengan ralat.
Penghuraian Balasan:
resp, err := http.ReadResponse(buf, req)
Pengendalian Badan Respons:
b := new(bytes.Buffer) io.Copy(b, resp.Body) resp.Body.Close() resp.Body = ioutil.NopCloser(b)
Populasi Strim:
stream = append(stream, Connection{Request: req, Response: resp})
Penamatan Gelung:
if err == io.EOF { break }
Contoh Penggunaan:
f, err := os.Open("/tmp/test.http") stream, err := ReadHTTPFromFile(f)
Kesimpulan
Kaedah ini menghuraikan permintaan dan respons HTTP dengan berkesan daripada fail teks dan mengisi []Sambungan potong dengan data yang dihuraikan. Ia mengendalikan badan tindak balas dengan betul dan memastikan penghuraian yang betul bagi berbilang permintaan dan respons dalam aliran paip.
Atas ialah kandungan terperinci Bagaimana Menghuraikan Permintaan dan Respons HTTP daripada Fail Teks dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!