无法为rest api手动设置查询参数(使用mux)

问题描述 投票:0回答:1

我正在使用mux实现Rest api。在验证了一些参数之后,我试图用一些默认值填充缺少的参数,我稍后通过处理请求的方法处理,但是,我注意到手动设置查询参数没有任何效果,除非原始查询是直接的改变了有点hacky:

func ValidateParameters(r *http.Request) (bool) {

     test := r.URL.Query().Get("test")

   // if test is not provided set some default value

    if test == "" {

        r.URL.Query().Set("test", "Test1") //not working
        r.URL.Query().Add("test", "Test2") //not working
        r.URL.RawQuery = r.URL.RawQuery + "&Test=Test3" // the only method working

     }

       // more code

}

处理程序在另一个文件中,所以我希望能够执行test := r.URL.Query().Get("test")并获取我在请求处理程序调用的ValidateParameters中设置的值,但这不起作用。

对此有何解释?任何解决方法?

谢谢。

go mux
1个回答
3
投票

问题是r.URL.Query()解析url,创建参数映射并返回它。这是通过每次.Query()调用完成的。

这应该工作:

params := r.URL.Query()
params.Set("key", "value")
r.URL.RawQuery = params.Encode()
© www.soinside.com 2019 - 2024. All rights reserved.