Go:表示没有查询字符串的路径

时间:2014-10-04 04:11:31

标签: go

如何在没有查询字符串的情况下表示路径?

例如:

  • www.example.com/user代替
  • www.example.com/user?id=1

以下代码无效:

转到:

if r.URL.Path[4:] != "" {
    //do something
}

2 个答案:

答案 0 :(得分:3)

func main() {
    req, err := http.NewRequest("GET", "http://www.example.com/user?id=1", nil)
    if err != nil {
        log.Fatal(err)
    }

    // get host
    fmt.Printf("%v\n", req.Host) // Output: www.example.com

    // path without query string
    fmt.Printf("%v\n", req.URL.Path) // Output: /user

    // get query string value by key
    fmt.Printf("%v\n", req.URL.Query().Get("id")) // Output: 1

    // raw query string
    fmt.Printf("%v\n", req.URL.RawQuery) // Output: id=1
}

转到play

答案 1 :(得分:1)

要向网址添加参数,您可以使用Values()

这意味着,没有任何参数的URL将其“值”长度设置为0:

if len(r.URL.Query()) == 0 {
}

这应与r.URL.RawQueryDewy Broto建议的the comments相同:

if r.URL.RawQuery == "" {
}

或者,您可以检查id地图中的密钥“Values()”是否存在。

if r.URL.Query().Get("id") == "" {
   //do something here
}