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")
.....
}
Just a comment to the previous answer.
We can just add two routes there, I feel it is more readable, like below:
r.HandleFunc("/user", userByValueHandler).
Queries(
"username", "{username}",
"email", "{email}",
).
Methods("GET")
r.HandleFunc("/user", UserByValueHandler).Methods("GET")