it-swarm.com.de

URL Builder/Query Builder in Go

Ich bin daran interessiert, dynamisch Argumente vom Benutzer als Eingabe über einen Browser oder eine CLI zu nehmen, um diese Parameter an den REST -API-Aufruf zu übergeben und somit die URL dynamisch mit Go zu konstruieren, was letztendlich einige JSON-Daten abruft . Ich wollte einige Techniken in Go kennenlernen, die mir dabei helfen könnten. Ein idealer Weg, an den ich dachte, war, eine Map zu verwenden und sie mit Argumenten, Schlüsseln und entsprechenden Werten zu füllen und sie iterieren und an den URL-String anhängen. Aber wenn es darum geht, die Argumente dynamisch zu übernehmen und die Map zu füllen, bin ich nicht sehr sicher wie geht das in Go? Kann mir jemand mit einem Code-Snippet in Go helfen?

Beispiel -

http: //: port? api = fetchJsonData & arg1 = val1 & arg2 = val2 & arg3 = val3 ..... & argn = valn

22
psbits

Es gibt bereits url.URL , das solche Dinge für Sie erledigt.

Für http-Handler (eingehende Anforderungen) ist dies ein Teil von http.Request (Zugriff mit req.URL.Query ()).

Ein sehr gutes Beispiel aus den offiziellen 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)
48
OneOfOne

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())
}

kehrt zurück:

https://example.com

0
030