Maison >développement back-end >Golang >Comment ajouter efficacement des paramètres de chaîne de requête aux requêtes GET de Go ?

Comment ajouter efficacement des paramètres de chaîne de requête aux requêtes GET de Go ?

DDD
DDDoriginal
2024-12-21 16:54:15986parcourir

How to Efficiently Add Querystring Parameters to Go's GET Requests?

Paramètres de chaîne de requête dans les requêtes GET de Go

Dans Go, l'envoi de requêtes GET avec des paramètres de chaîne de requête peut être réalisé à l'aide de http.Client. Cependant, cette tâche n'est peut-être pas aussi simple qu'il y paraît.

Pour surmonter ce défi, vous pouvez tirer parti du package net/url. Son type Values ​​fournit un mécanisme pratique pour créer des chaînes de requête. Prenons l'exemple suivant :

import (
    "fmt"
    "log"
    "net/http"
    "os"
    "net/url"
)

func main() {
    // Create a new request object with an initial URL.
    req, err := http.NewRequest("GET", "http://api.themoviedb.org/3/tv/popular", nil)
    if err != nil {
        log.Print(err)
        os.Exit(1)
    }

    // Get the existing query parameters from the request URL.
    q := req.URL.Query()

    // Add your querystring parameters to the `q` map.
    q.Add("api_key", "key_from_environment_or_flag")
    q.Add("another_thing", "foo & bar")

    // Encode the updated `q` map into a raw querystring and set it in the request.
    req.URL.RawQuery = q.Encode()

    // Retrieve the final URL with the querystring for debugging purposes.
    fmt.Println(req.URL.String())
    // Output:
    // http://api.themoviedb.org/3/tv/popular?another_thing=foo+%26+bar&api_key=key_from_environment_or_flag
}

Ce code montre comment créer dynamiquement des paramètres de chaîne de requête sans recourir à la concaténation de chaînes. La méthode Encode de url.Values ​​garantit que les caractères spéciaux sont correctement codés pour la transmission.

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!

Déclaration:
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