如何在没有查询字符串的情况下表示路径?
例如:
www.example.com/user
代替www.example.com/user?id=1
以下代码无效:
转到:
if r.URL.Path[4:] != "" {
//do something
}
答案 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.RawQuery
中Dewy Broto建议的the comments相同:
if r.URL.RawQuery == "" {
}
或者,您可以检查id
地图中的密钥“Values()
”是否存在。
if r.URL.Query().Get("id") == "" {
//do something here
}