我正在学习 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
1 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
根据文档,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"]
值。
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消