猿问

请求表返回零

我正在学习 golang 并尝试实现自定义组合来熟悉该语言,不幸的req.Form是正在返回nil。


当然我之前也跑过req.ParseForm()。


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)

    }

}

这是我使用的示例 URLGET http://localhost:8080/users/3


MMMHUHU
浏览 91回答 1
1回答

杨__羊羊

根据文档,req.Form如果您致电,应始终更新req.ParseForm。对于所有请求,ParseForm 解析来自 URL 的原始查询并更新 r.Form。而且,如果你看一下ParseForm的实现,似乎不可能是在nil方法执行之后。确实可能发生的情况是,req.Form最终会变成一张空地图,也许这就是您在那里看到的。如果您正在执行以下操作,则将其为空是有意义的:GET http://localhost:8080/users/3由于它没有用于ParseForm实际解析的参数,因此req.Form最终将成为一个空映射。例如,如果您尝试这样做:GET http://localhost:8080/users/3?a=b然后你应该在地图中获得一个条目"a"作为键和["b"]值。
随时随地看视频慕课网APP

相关分类

Go
我要回答