我想让我的一些查询参数是可选的。至于现在,我有
r.HandleFunc("/user", userByValueHandler).
Queries(
"username", "{username}",
"email", "{email}",
).
Methods("GET")
但在这种情况下,“username”和“email”需要出现在请求中。我想有更灵活的选择:有2个或只有其中一个(但不是零参数)。
谢谢!
答案 0 :(得分:14)
所以我找到了重写逻辑的解决方案:
r.HandleFunc("/user", UserByValueHandler).Methods("GET")
在UserByValueHandler
我们可以有类似的东西:
func UserByValueHandler(w http.ResponseWriter, r *http.Request) {
v := r.URL.Query()
username := v.Get("username")
email := v.Get("email")
.....
}
答案 1 :(得分:0)
只需评论上一个答案即可。
我们可以在此处添加两条路线,我觉得它更具可读性,如下所示:
r.HandleFunc("/user", userByValueHandler).
Queries(
"username", "{username}",
"email", "{email}",
).
Methods("GET")
r.HandleFunc("/user", UserByValueHandler).Methods("GET")