Создатель URL/построитель запросов в Go
Мне интересно динамически принимать аргументы от пользователя в качестве входных данных через браузер или CLI для передачи этих параметров в вызов REST API и, следовательно, динамически создавать URL-адрес с помощью Go, который в конечном итоге приведет мне некоторые данные JSON. Я хотел знать некоторые методы в Go, которые могли бы помочь мне в этом. Один из идеальных способов, я думал, это использовать карту и заполнить ее с помощью ключей аргументов и соответствующих значений и перебрать ее и добавить в строку URL. Но когда дело доходит до динамического принятия аргументов и заполнения карты, я не очень уверен как это сделать в Go. Может ли кто-нибудь помочь мне с некоторым фрагментом кода в Go?
Пример -
Http://: порт апи = fetchJsonData & arg1 = val1 & арг2 = значение2 & arg3 = val3..... & АГРН = valn
Ответы
Ответ 1
Там уже url.URL
, который обрабатывает такие вещи для вас.
Для обработчиков http (входящих запросов) это часть http.Request
(обращайтесь к ней с помощью req.URL.Query()).
Очень хороший пример из официального docs:
u, err := url.Parse("http://bing.com/search?q=dotnet")
if err != nil {
log.Fatal(err)
}
u.Scheme = "https"
u.Host = "google.com"
q := u.Query()
q.Set("q", "golang")
u.RawQuery = q.Encode()
fmt.Println(u)
Ответ 2
https://github.com/golang/go/issues/17340#issuecomment-251537687
https://play.golang.org/p/XUctl_odTSb
package main
import (
"fmt"
"net/url"
)
func someURL() string {
url := url.URL{
Scheme: "https",
Host: "example.com",
}
return url.String()
}
func main() {
fmt.Println(someURL())
}
возвращает:
https://example.com