dongyanhu5628 2017-09-05 01:20
浏览 21
已采纳

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

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?

  • 写回答

1条回答 默认 最新

  • dongyanling9248 2019-01-15 15:13
    关注

    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")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?