I'm writing a handler that can take either POST or GET. As such, I want the option of being able to say:
http://host/query?parm1=value&parm2=value
I was assuming that Gorilla mux would then give me:
{
"parm1": "value",
"parm2": "value
}
but mux.Vars(r)
is empty. I'm aware that using .Query("key", "value"
will make the parameters mandatory, which isn't what I want. What am I missing?
As reflected in a comment, the basic answer is "that's not what mux is for". mux
is great at picking apart the path portion of a URL, and turning the components into variables. To give a hypothetical example, a call that gives information about a country might have a spec that looks like this:
country/{code}
and accept calls that look like this:
http://myhost/country/DE
You'd get the value of the code
parameter like this:
code := mux.Vars(r)["code"]
If you want to pass query variables, you don't do that with mux. Just grab them straight from the request. So given the alternative query syntax:
http://myhost/country?code=DE
you'd do:
code := r.URL.Query().Get("code")