我正在學習 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 關注
- 132 瀏覽
添加回答
舉報
0/150
提交
取消