我有一個反向代理 API,它讀取 localhost API 調用的參數,然后將這些參數發送到第 3 方 API。如果我只使用一個參數,我就能讓它正常工作。像這樣:http://localhost:8080/path?page=1我希望能夠使用多個參數,但是像這樣:http://localhost:8080/path?page=1¶m=x請參閱下面的代碼:此函數捕獲 HTTP 請求,然后將這些參數發送到另一個 API。func (s *Server) getReverseProxy(w http.ResponseWriter, r *http.Request) { // when I try to append another query in the list a long with page, I get an error keys, ok := r.URL.Query()["page"] if !ok || len(keys[0]) < 1 { log.Println("Url Param 'page' is missing") return } // Query()["key"] will return an array of items, // we only want the single item. key := keys[0] log.Println("Url Param 'page' is: " + string(key)) params := url.Values{ "page[size]": []string{"100"}, "page[number]": []string{""}, } u := &url.URL{ Scheme: "https", Host: "url.com", Path: "/path", RawQuery: params.Encode(), }}無需折射,我在這里錯過了一些簡單的東西嗎?如何為我的函數添加另一個參數來捕獲?
2 回答

慕田峪4524236
TA貢獻1875條經驗 獲得超5個贊
下面的代碼行...
keys, ok := r.URL.Query()["page"]
它返回的參數值page,但在[]string類型。要檢索更多參數,只需添加具有不同參數名稱的類似語句。例如:
keysPage, ok := r.URL.Query()["page"]
keysParamA, ok := r.URL.Query()["ParamA"]
keysParamB, ok := r.URL.Query()["ParamB"]
keysParamC, ok := r.URL.Query()["ParamC"]
或者,您也可以使用r.URL.Query().Get(key)返回string類型中的參數值。
page := r.URL.Query().Get("page")
paramA := r.URL.Query().Get("ParamA")
paramB := r.URL.Query().Get("ParamB")
paramC := r.URL.Query().Get("ParamC")

湖上湖
TA貢獻2003條經驗 獲得超2個贊
r.URL.Query()返回一個map[string][]string
你可以做一個
keys, ok := r.URL.Query()
//browse through keys by
keys["params"]
keys["page"]
- 2 回答
- 0 關注
- 186 瀏覽
添加回答
舉報
0/150
提交
取消