Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 请求表单返回零_Go_Url_Mux - Fatal编程技术网

Go 请求表单返回零

Go 请求表单返回零,go,url,mux,Go,Url,Mux,我正在学习golang,并试图实现一个自定义的混合来熟悉该语言,不幸的是,req.Form返回了nil 当然,我是在req.ParseForm之前运行的 这是我通过GET使用的示例URLhttp://localhost:8080/users/3根据文档,如果调用req.ParseForm,则应始终更新req.Form 对于所有请求,ParseForm从URL解析原始查询并更新r.Form 此外,如果您查看ParseForm的实现,那么在执行该方法之后,它似乎不可能为零 真正可能发生的是,req.

我正在学习golang,并试图实现一个自定义的混合来熟悉该语言,不幸的是,req.Form返回了nil

当然,我是在req.ParseForm之前运行的


这是我通过GET使用的示例URLhttp://localhost:8080/users/3

根据文档,如果调用req.ParseForm,则应始终更新req.Form

对于所有请求,ParseForm从URL解析原始查询并更新r.Form

此外,如果您查看ParseForm的实现,那么在执行该方法之后,它似乎不可能为零

真正可能发生的是,req.Form最终成为一个空映射,也许这就是您在那里看到的

如果您正在执行以下操作,则它为空是有意义的:

得到http://localhost:8080/users/3

因为它没有ParseForm实际解析的参数,所以req.Form最终将成为一个空映射

例如,如果您尝试以下方法:

得到http://localhost:8080/users/3?a=b


然后,您应该在映射中获取一个条目,其中a作为键,[b]作为值。

get请求不包含正文,您是否尝试从URL获取参数?您是否尝试检查func r*请求解析表单错误返回的错误?@当然,在使用?a=b(例如,作为查询库)时,req.Form仍可能解析内容:所以我必须解析它才能获得正确的用户id?@BilalReffas,对,请看这里:或者有很多库可以让这更容易谢谢!那么,我将建造自己的:
func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) {
    req.ParseForm()
    params := req.Form
    node, _ := r.tree.findNode(strings.Split(req.URL.Path, "/")[1:], params)
    if handler := node.methods[req.Method]; handler != nil {
        handler(w, req, params)
    }
}