0

好像网址不支持矩阵参数

// From net/url
type URL struct {
        Scheme   string
        Opaque   string    // encoded opaque data
        User     *Userinfo // username and password information
        Host     string    // host or host:port
        Path     string
        RawQuery string // encoded query values, without '?'
        Fragment string // fragment for references, without '#'
}
  • 为什么 ?
  • 如何从 URL 中提取矩阵参数?request.URL.RawQuery什么时候应该使用它们而不是使用URL 部分中嵌入的请求参数?
4

1 回答 1

0

参数最终被放入url.Path。这是一个可以Query为您提供它们的功能:

func ParseWithMatrix(u string) (*url.URL, error) {
    parsed, err := url.Parse(u)
    if err != nil {
        return nil, err
    }
    if strings.Contains(parsed.Path, ";") {
        q := parsed.Path[strings.Index(parsed.Path, ";")+1:]
        m, err := url.ParseQuery(q)
        if err != nil {
            return nil, err
        }
        for k, vs := range parsed.Query() {
            for _, v := range vs {
                m.Add(k, v)
            }
        }
        parsed.Path = parsed.Path[:strings.Index(parsed.Path, ";")]
        parsed.RawQuery = m.Encode()
    }
    return parsed, nil
}
于 2013-12-30T14:24:41.243 回答