Rumah >pembangunan bahagian belakang >Golang >Adakah Saya Perlu Menutup Badan Respons Selepas Ralat HTTP GET dalam Go?
Dalam pembangunan web, selalunya perlu untuk mengendalikan respons daripada permintaan HTTP. Fungsi http.Get(url) dalam Go digunakan untuk tujuan ini. Walau bagaimanapun, ia menimbulkan persoalan: adakah perlu untuk menutup badan tindak balas jika ralat berlaku semasa permintaan GET?
Pertimbangan Pengendalian Ralat
Mengikut prinsip pengaturcaraan umum , apabila fungsi mengembalikan berbilang nilai, salah satunya adalah ralat, ralat itu harus diperiksa terlebih dahulu sebelum meneruskan. Nilai bukan ralat harus mengembalikan nilai sifar jika terdapat ralat.
Kelakuan http.Get()
Dokumentasi untuk http.Get() tidak menyimpang dari prinsip ini. Oleh itu, pengendalian ralat hendaklah dikendalikan seperti berikut:
res, err := http.Get(url) if err != nil { log.Printf("Error: %s\n", err) return } defer res.Body.Close() // Read/work with body
Kes Khas untuk Pengalihan
JimB mengesahkan bahawa apabila ralat bukan nol dikembalikan, walaupun jika respons adalah tidak sifar, tidak perlu menutupnya. Walau bagaimanapun, terdapat pengecualian dalam kes ralat ubah hala. Respons mungkin mengandungi konteks dan maklumat tambahan tentang tempat ubah hala gagal.
Menutup Badan Respons Tidak Nihil dengan Ralat
Jika anda ingin menutup badan respons apabila ada tindak balas dan ralat bukan nol, anda boleh melakukannya dalam salah satu daripada ini cara:
res, err := http.Get(url) if err != nil { log.Printf("Error: %s\n", err) } if res != nil { defer res.Body.Close() // Read/work with body }
res, err := http.Get(url) if err != nil { log.Printf("Error: %s\n", err) } if res == nil { return } defer res.Body.Close() // Read/work with body
Jaminan Badan Bukan Nihil
Dokumentasi untuk http.Response menjamin Response.Body tidak akan ada, walaupun jika tiada data tindak balas atau badan mempunyai sifar panjang.
Kesimpulan
Kesimpulannya, tidak perlu menutup badan tindak balas sekiranya berlaku ralat daripada http.Get(), melainkan ralat itu berkaitan ke arah semula. Walau bagaimanapun, adalah selamat untuk menutup badan jika tindak balasnya bukan nol, menggunakan salah satu pendekatan yang digariskan di atas.
Atas ialah kandungan terperinci Adakah Saya Perlu Menutup Badan Respons Selepas Ralat HTTP GET dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!