Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyoal URL dalam Go tanpa Mengikuti Ubah Hala?

Bagaimana untuk Menyoal URL dalam Go tanpa Mengikuti Ubah Hala?

Susan Sarandon
Lepaskan: 2024-11-24 20:13:46
asal
836 orang telah melayarinya

How to Query URLs in Go without Following Redirects?

Menyiasat URL tanpa Ubah Hala dalam Go

Dalam ujian penanda aras untuk skrip ubah hala, adalah perlu untuk menanya URL tanpa memulakan ubah hala automatik . Ini memerlukan menghalang atur cara daripada memuat turun kandungan yang diubah hala semasa masih mengelog URL ubah hala atau sebarang ralat yang berkaitan.

Penyelesaian 1: Menggunakan http.DefaultTransport.RoundTrip

Satu pendekatan adalah untuk memanfaatkan fungsi http.DefaultTransport.RoundTrip() dalam http.Request anda. Tidak seperti http.Client, Transport tidak mengikut ubah hala secara automatik:

req, err := http.NewRequest("GET", "http://example.com/redirectToAppStore", nil)
// ...
resp, err := http.DefaultTransport.RoundTrip(req)
Salin selepas log masuk

Walau bagaimanapun, penyelesaian ini mungkin menghadapi masalah prestasi dan ralat di bawah senario beban tinggi.

Penyelesaian 2: Tetapan CheckRedirect to False

Sebagai alternatif, anda boleh mengubah suai medan CheckRedirect pada http.Pelanggan untuk melumpuhkan ubah hala automatik:

client := &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
    },
}
// ...
resp, err := client.Get("http://example.com/redirectToAppStore")
Salin selepas log masuk

Kaedah ini memastikan prestasi yang konsisten, tetapi ia tidak menjamin penutupan sambungan selepas setiap pertanyaan.

Memastikan Penutupan Sambungan

Untuk menguatkuasakan penutupan sambungan, anda boleh membuat klien HTTP baharu untuk setiap permintaan:

for i := 0; i < n; i++ {
    client := &http.Client{
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
            return http.ErrUseLastResponse
        },
    }
    resp, err := client.Get("http://example.com/redirectToAppStore")
    // ...
}
Salin selepas log masuk

Pendekatan ini memastikan setiap pertanyaan menggunakan sambungan baharu, menghalang isu prestasi akibat penggunaan semula sambungan.

Atas ialah kandungan terperinci Bagaimana untuk Menyoal URL dalam Go tanpa Mengikuti Ubah Hala?. 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