web-dev-qa-db-ja.com

GoのURLビルダー/クエリビルダー

ブラウザーまたはCLIを介して入力としてユーザーから引数を動的に取得して、これらのパラメーターをREST API呼び出しに渡し、最終的にGoを使用してURLを動的に構築することに興味がありますJSONデータを取得してください。

Goで役立つテクニックをいくつか知りたいと思います。私が考えた理想的な方法の1つは、マップを使用して、引数キーとそれに対応する値をマップに入力し、それを繰り返してURL文字列に追加することでした。しかし、動的に引数を取り、マップにデータを取り込むことになると、Goでそれをどのように行うかはよくわかりません。誰かがGoのコードスニペットを手伝ってくれますか?

リクエストの例:

http://<IP>:port?api=fetchJsonData&arg1=val1&arg2=val2&arg3=val3.....&argn=valn
27
psbits

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

戻り値:

https://example.com

3
030