Sono abbastanza nuovo da fare e non capisco ancora tutto. In molti dei linguaggi moderni Node.js, Angular, jQuery, PHP è possibile eseguire una richiesta GET con parametri di stringa di query aggiuntivi.Vai a fare una richiesta GET e costruire la Querystring
Fare questo in Go non è abbastanza semplice come sembra, e non riesco ancora a capirlo. Davvero non voglio dover concatenare una stringa per ognuna delle richieste che voglio fare.
Ecco lo script di esempio:
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))
}
In questo esempio si può vedere c'è un URL, che richiede una variabile GET di api_key con la vostra chiave API come valore. Il problema è che questo diventa difficile codificato sotto forma di:
req, _ := http.NewRequest("GET", "http://api.themoviedb.org/3/tv/popular?api_key=mySuperAwesomeApiKey", nil)
C'è un modo per costruire questa stringa di query in modo dinamico ?? Al momento dovrò assemblare l'URL prima di questo passaggio per ottenere una risposta valida.
Allora, cosa c'è di sbagliato con concatenando una stringa? –
Suppongo che non sia niente, ma non è davvero una sottigliezza elegante, ho pensato che c'è un modo migliore di fare le cose in Go. Vedete le modifiche all'azione, il metodo e quindi dovete mettere insieme tutto. –
Puoi usare ['url.Values'] (https://golang.org/pkg/net/url/#Values) 's [' Encode'] (https://golang.org/pkg/net/url /#Values.Encode) metodo. Puoi anche utilizzare ['URL.String'] (https://golang.org/pkg/net/url/#URL.String) per creare l'intero URL. –