我建立與URL,使用隔板在Strings.join GoLang
var SearchUrl = "https://www.example.org/3/search/movie?query="
然後形成持有的關鍵字來搜索數據的前一個URL。
var MovieSearch []string = r.Form["GetSearchKey"]
和保持API密鑰
var apiKey = "&api_key=######"
我使用ArrayToString()
解析表單輸入數據
func ArrayToString(array []string) string{
str := strings.Join(array, "+")
return str
}
然後建立類似的網址URL的第三部分這個,
var SearchUrl = "https://api.example.org/3/search/movie?query="
var MovieSearch []string = r.Form["GetSearchKey"]
var apiKey = "&api_key=########"
UrlBuild := []string {SearchUrl, ArrayToString(MovieSearch), apiKey}
OUTPUT_STRING := ArrayToString(UrlBuild)
帶一個單詞的URL輸出完美。該URL看起來像這樣,
https://api.example.org/3/search/movie?query=+bad+&api_key=#####
當我添加第二個字輸入字段的URL看起來像這樣,
https://api.example.org/3/search/movie?query=bad santa&api_key=e######
我需要的關鍵字沒有他們之間的空間像不起作用的網址。
這是我的基礎上,回答Cedmundo
func ArrayToQuery(values []string) string {
return url.QueryEscape(strings.Join(values, " "))
}
func searchHandler(w http.ResponseWriter, r *http.Request) {
display(w, "search", &Page{Title: "Search"})
fmt.Println("method:", r.Method)
r.ParseForm()
var MovieSearch = r.Form["GetSearchKey"]
var SearchKeys = ArrayToQuery(MovieSearch)
params := fmt.Sprintf("?query=%s&api_key=eagaggagagagagagag", url.QueryEscape(SearchKeys))
perform := url.URL{
Scheme: "https",
Host: "api.example.org",
Path: "3/search/movie",
RawQuery: params,
}
fmt.Println(perform) // <- Calls .String()
}
當前的嘗試錯誤
./main.go:63: url.QueryEscape undefined (type string has no field or method QueryEscape)
./main.go:75: url.QueryEscape undefined (type string has no field or method QueryEscape)
./main.go:76: url.URL undefined (type string has no field or method URL)
./main.go:94: undefined: OUTPUT_STRING
./main.go:96: undefined: OUTPUT_STRING
我認爲你的輸入切片可能是錯誤的,這就是爲什麼連接沒有產生你所期望的。 – Tyler
關於url.QueryEscape的錯誤很可能是因爲你有一個名爲「url」的全局變量(或者這個函數中的一個var,但不是你粘貼給我們的東西)。基本上,你用一個名爲url的字符串來映射包URL。重命名變量URL,它應該正常工作 –