我有一个反向代理 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 关注
- 153 浏览
添加回答
举报
0/150
提交
取消