我正在學(xué)習(xí) golang 并嘗試實(shí)現(xiàn)自定義組合來(lái)熟悉該語(yǔ)言,不幸的req.Form是正在返回nil。當(dāng)然我之前也跑過(guò)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貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
根據(jù)文檔,req.Form
如果您致電,應(yīng)始終更新req.ParseForm
。
對(duì)于所有請(qǐng)求,ParseForm 解析來(lái)自 URL 的原始查詢(xún)并更新 r.Form。
而且,如果你看一下ParseForm的實(shí)現(xiàn),似乎不可能是在nil
方法執(zhí)行之后。
確實(shí)可能發(fā)生的情況是,req.Form
最終會(huì)變成一張空地圖,也許這就是您在那里看到的。
如果您正在執(zhí)行以下操作,則將其為空是有意義的:
GET http://localhost:8080/users/3
由于它沒(méi)有用于ParseForm
實(shí)際解析的參數(shù),因此req.Form
最終將成為一個(gè)空映射。
例如,如果您嘗試這樣做:
GET http://localhost:8080/users/3?a=b
然后你應(yīng)該在地圖中獲得一個(gè)條目"a"
作為鍵和["b"]
值。
- 1 回答
- 0 關(guān)注
- 129 瀏覽
添加回答
舉報(bào)
0/150
提交
取消