Aller faire une requête GET et la construction de la chaîne de Requête
Je suis assez nouveau à l'Aller et de ne pas tout comprendre encore. Dans beaucoup de langues modernes Node.js, Angulaire, jQuery, PHP, vous pouvez faire une requête GET avec d'autres paramètres de chaîne de requête.
Faire en Aller n'est pas tout à fait aussi simple qu'il y paraît, et je ne peux pas vraiment comprendre encore. Je ne veux vraiment pas avoir à concaténer une chaîne de caractères pour chacune des demandes que je veux faire.
Voici un exemple de script:
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "http://api.themoviedb.org/3/tv/popular", nil)
req.Header.Add("Accept", "application/json")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Errored when sending request to the server")
return
}
defer resp.Body.Close()
resp_body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(resp.Status)
fmt.Println(string(resp_body))
}
Dans cet exemple vous pouvez voir il y a une URL, ce qui nécessite une variable de api_key avec votre clé api que la valeur. Le problème étant que cela devient codées en dur dans la forme de:
req, _ := http.NewRequest("GET", "http://api.themoviedb.org/3/tv/popular?api_key=mySuperAwesomeApiKey", nil)
Est-il un moyen de construire cette chaîne de requête dynamiquement?? Pour le moment, j'ai besoin d'assembler les URL avant cette étape afin d'obtenir une réponse valide.
- Alors quel est le problème avec la concaténation d'une chaîne de caractères?
- Je suppose que rien, mais ce n'est pas vraiment une élégante solution, juste pensé il ya une meilleure façon de faire les choses en Aller. Vous voyez l'action des changements, la méthode et ensuite, vous avez à la chaîne tout ensemble.
- Vous pouvez utiliser
url.Values
duEncode
de la méthode. Vous pouvez également utiliserURL.String
pour construire l'ensemble de l'URL.
Vous devez vous connecter pour publier un commentaire.
Comme un intervenant a mentionné que vous pouvez obtenir
Values
denet/url
qui a unEncode
méthode. Vous pourriez faire quelque chose comme ceci (req.URL.Query()
renvoie l'existanturl.Values
)http://play.golang.org/p/L5XCrw9VIG
Encode()
méthode.url.Parse("https://something.com/")
au lieu de cela, ou même créer un objet d'URL directement.Utilisation
r.URL.Query()
lorsque vous ajoutant à la requête existante, si vous créez un nouvel ensemble de paramètres d'utilisation de laurl.Values
struct comme