如何使用Gorilla Mux在GET请求中获得可选查询?

时间:2017-04-12 21:28:12

标签: go gorilla

我想让我的一些查询参数是可选的。至于现在,我有

r.HandleFunc("/user", userByValueHandler).
    Queries(
        "username", "{username}",
        "email", "{email}",
    ).
    Methods("GET")

但在这种情况下,“username”和“email”需要出现在请求中。我想有更灵活的选择:有2个或只有其中一个(但不是零参数)。

谢谢!

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")