Я новичок в Go и еще не совсем все понимаю. Во многих современных языках Node.js, Angular, jQuery, PHP вы можете выполнять запрос GET с дополнительными параметрами строки запроса.
Сделать это в Go не так просто, как кажется, и я пока не могу понять этого. Я действительно не хочу объединять строку для каждого запроса, который я хочу выполнить.
Вот пример сценария:
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))
}
В этом примере вы можете увидеть, что есть URL-адрес, для которого требуется переменная GET api_key с вашим ключом api в качестве значения. Проблема в том, что это становится жестко закодированным в форме:
req, _ := http.NewRequest("GET", "http://api.themoviedb.org/3/tv/popular?api_key=mySuperAwesomeApiKey", nil)
Есть ли способ динамически построить эту строку запроса? На данный момент мне нужно будет собрать URL-адрес до этого шага, чтобы получить действительный ответ.