用大猩猩mux检索可选查询变量?

Sco*_*ter 5 go gorilla

我正在编写一个可以采用POST或GET的处理程序。因此,我希望可以说:

http://host/query?parm1=value&parm2=value
Run Code Online (Sandbox Code Playgroud)

我当时以为大猩猩混合体会给我:

{
    "parm1": "value",
    "parm2": "value
}
Run Code Online (Sandbox Code Playgroud)

但是mux.Vars(r)空的。我知道使用.Query("key", "value"会使参数成为强制性的,这不是我想要的。我想念什么?

Sco*_*ter 7

正如评论中所反映的那样,基本答案是“这不是mux的目的”。mux擅长分解URL 的路径部分,并将组件转换为变量。举一个假设的例子,提供有关某个国家/地区信息的呼叫可能具有如下所示的规范:

country/{code}
Run Code Online (Sandbox Code Playgroud)

并接受如下所示的呼叫:

http://myhost/country/DE
Run Code Online (Sandbox Code Playgroud)

您将获得如下所示的code参数值:

code := mux.Vars(r)["code"]
Run Code Online (Sandbox Code Playgroud)

如果要传递查询变量,则不要使用mux进行。只需从请求中直接获取它们即可。因此,给出了替代查询语法:

http://myhost/country?code=DE
Run Code Online (Sandbox Code Playgroud)

你会做:

code := r.URL.Query().Get("code")
Run Code Online (Sandbox Code Playgroud)