英文:
Go: Represent path without query string
问题
如何表示没有查询字符串的路径?
例如:
www.example.com/user
而不是www.example.com/user?id=1
以下代码无效:
Go:
if r.URL.Path[4:] != "" {
//do something
}
英文:
How do I represent a path without query string?
Eg.:
www.example.com/user
instead ofwww.example.com/user?id=1
The following code didn't work:
Go:
if r.URL.Path[4:] != "" {
//do something
}
答案1
得分: 7
func main() {
req, err := http.NewRequest("GET", "http://www.example.com/user?id=1", nil)
if err != nil {
log.Fatal(err)
}
// 获取主机名
fmt.Printf("%v\n", req.Host) // 输出: www.example.com
// 获取路径(不包含查询字符串)
fmt.Printf("%v\n", req.URL.Path) // 输出: /user
// 根据键获取查询字符串的值
fmt.Printf("%v\n", req.URL.Query().Get("id")) // 输出: 1
// 原始查询字符串
fmt.Printf("%v\n", req.URL.RawQuery) // 输出: id=1
}
Go [play](http://play.golang.org/p/oqSxCV89vP)
英文:
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
}
Go play
答案2
得分: 0
要向URL添加参数,您可以使用Values()
。
这意味着没有任何参数的URL的'Values'长度将设置为0:
if len(r.URL.Query()) == 0 {
}
这与Dewy Broto在评论中建议的r.URL.RawQuery
相同:
if r.URL.RawQuery == "" {
}
或者您可以检查Values()
映射中是否存在键'id
'。
if r.URL.Query().Get("id") == "" {
//在这里执行某些操作
}
英文:
To add parameters to an url, you would use Values()
.
That means, an URL without any parameters would have its 'Values' length set to 0:
if len(r.URL.Query()) == 0 {
}
That should be the same as the r.URL.RawQuery
suggested by Dewy Broto in the comments:
if r.URL.RawQuery == "" {
}
Or you can check for the presence if the key 'id
' in the Values()
map.
if r.URL.Query().Get("id") == "" {
//do something here
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论