从URL中提取不区分大小写的查询参数

时间:2018-02-21 10:19:12

标签: url go request.querystring querystringparameter

我正在尝试从URL中提取不区分大小写的查询参数/staging/ec/23463/front-view-72768.jpg?angle=90&or=0x0&wd=400&ht=200。当我尝试以小写形式转换整个URL时,它会引发以下异常:

cannot use r.URL (type *url.URL) as type string in argument to strings.ToLower

我打印了URL的值,它表示底层它将所有查询字符串存储为地图,即map[angle:[90] or:[0x0] wd:[400] ht:[200]]。因此,我将使用此r.URL.Query().Get("or")获得正确的值但是如果查询字符串出现Or。它会失败。

2 个答案:

答案 0 :(得分:5)

* URL.Query()返回url.Values类型的值,它只是一个带有一些额外方法的map[string][]string

由于URL值根据定义区分大小写,因此您必须直接访问地图。

var query url.Values

for k, vs := range query {
    if strings.ToLower(k) == "ok" {
        // do something with vs
    }
}

在操场上试试:https://play.golang.org/p/7YVuxI3GO6X

答案 1 :(得分:0)

cannot use r.URL (type *url.URL) as type string in argument to strings.ToLower

这是因为您传递的是ur.URL而不是string。从url到String()函数获取字符串。

url.String()