登录
首页 >  Golang >  Go问答

学习如何从 URL 中提取多个参数

来源:stackoverflow

时间:2024-02-10 17:15:26 239浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《学习如何从 URL 中提取多个参数》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我有一个反向代理 api,它读取本地主机 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(),
    }
}

无需折射,我是否在这里错过了一些简单的东西?如何为我的函数添加另一个要捕获的参数?


正确答案


下面的代码行...

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")

r.url.query() 返回 map[string][]string

你可以做

keys, ok := r.URL.Query()
//browse through keys by
keys["params"]
keys["page"]

终于介绍完啦!小伙伴们,这篇关于《学习如何从 URL 中提取多个参数》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>