如何使用Gorilla Mux在GET请求中进行可选查询? [英] How to have an optional query in GET request using Gorilla Mux?

查看:132
本文介绍了如何使用Gorilla Mux在GET请求中进行可选查询?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  r.HandleFunc(/ user,userByValueHandler)。 
查询(
用户名,{用户名},
电子邮件,{电子邮件},
)。
方法(GET)

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



谢谢!


所以我找到了解决方案来重新编写我的逻辑:

 <$ 

c $ c> r.HandleFunc(/ user,UserByValueHandler)。方法(GET)

UserByValueHandler 中,我们可以这样:

  func UserByValueHandler w http.ResponseWriter,r * http.Request){
v:= r.URL.Query()

username:= v.Get(username)
email: = v.Get(email)
.....
}


I would like to have some of my query parameters be optional. As for now, I have

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

But in this case "username" AND "email" needs to be present in the request. I want to have more flexible choice: have 2 of them OR have just one of them (but not zero parameters).

Thanks!

解决方案

So I found the solution to re-write my logic as:

r.HandleFunc("/user", UserByValueHandler).Methods("GET")

And in UserByValueHandler we can have something like:

func UserByValueHandler(w http.ResponseWriter, r *http.Request) {
       v := r.URL.Query()

       username := v.Get("username")
       email := v.Get("email")
       .....
}

这篇关于如何使用Gorilla Mux在GET请求中进行可选查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆