Maison > développement back-end > Golang > Comment interroger des URL sans redirections dans Go ?

Comment interroger des URL sans redirections dans Go ?

Barbara Streisand
Libérer: 2024-12-07 14:10:14
original
687 Les gens l'ont consulté

How to Query URLs Without Redirects in Go?

Interrogation d'URL sans redirection dans Go

Lors du test des scripts de redirection, il peut être nécessaire d'interroger une URL sans déclencher la redirection. Ceci est particulièrement utile pour enregistrer les URL de redirection ou les erreurs. Il existe deux approches pour y parvenir dans Go.

Utilisation du transport par défaut

La première méthode consiste à utiliser l'objet http.DefaultTransport, qui permet un meilleur contrôle sur le processus de traitement des demandes. En utilisant la fonction RoundTrip, il est possible d'exécuter la requête HTTP sans suivre aucune redirection.

req, err := http.NewRequest("GET", "http://example.com/redirectToAppStore", nil)
// ...
resp, err := http.DefaultTransport.RoundTrip(req)
Copier après la connexion

Utilisation du champ CheckRedirect

Alternativement, la deuxième méthode exploite le champ CheckRedirect d'un http.Client. En définissant ce champ sur func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, cela désactive effectivement le traitement de redirection pour les requêtes ultérieures exécutées via le client.

client := &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
    },
}
resp, err := client.Get("http://example.com/redirectToAppStore")
Copier après la connexion

Considérations sur les performances

Dans le contexte du benchmarking, il est important de noter que la première solution (http.DefaultTransport.RoundTrip) présente des problèmes de performances lors de l'exécution de nombreuses requêtes en parallèle. Cela est dû au potentiel de réutilisation des connexions au sein du transport.

Pour les scénarios où des demandes individuelles nécessitent des connexions distinctes, il est recommandé d'utiliser la deuxième solution (champ CheckRedirect) et de créer un nouveau client pour chaque demande. Cela garantit que les connexions sont fermées après chaque requête et non réutilisées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal