为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 URL 中读取多个参数

如何从 URL 中读取多个参数

Go
墨色风雨 2022-11-08 17:10:23
我有一个反向代理 API,它读取 localhost API 调用的参数,然后将这些参数发送到第 3 方 API。如果我只使用一个参数,我就能让它正常工作。像这样:http://localhost:8080/path?page=1我希望能够使用多个参数,但是像这样:http://localhost:8080/path?page=1&param=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")


查看完整回答
反对 回复 2022-11-08
?
湖上湖

TA贡献2003条经验 获得超2个赞

r.URL.Query()返回一个map[string][]string


你可以做一个


keys, ok := r.URL.Query()

//browse through keys by

keys["params"]

keys["page"]


查看完整回答
反对 回复 2022-11-08
  • 2 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信