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
Susan Sarandonasal
2024-11-24 20:13:46838semak imbas

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)

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")

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")
    // ...
}

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!

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