一尘不染

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

go

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

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

但是在这种情况下,请求中必须包含“用户名”和“电子邮件”。我想要一个更灵活的选择:使用2个或仅选择其中之一(但不设置零参数)。

谢谢!


阅读 218

收藏
2020-07-02

共1个答案

一尘不染

因此,我找到了将逻辑重写为的解决方案:

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")
       .....
}
2020-07-02