无法使用 htprouter 在 Golang 中读取表单值

我是 Golang 的新手,正在尝试使用httprouter API运行一个基本的 http 应用程序。尽管遵循了另一个 StackOverflow 问题中给出的建议,但我在阅读已发布的表单数据时遇到了困难。


这是我的代码(减去无关项):


import (

    "fmt"

    "net/http"

    "github.com/julienschmidt/httprouter"

)



func main() {

    r := httprouter.New()

    r.POST("/sub", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {

        r.Header.Set("content-type", "text/html")

        err := r.ParseForm()

        if err != nil {

            fmt.Fprintf(w, "<h1>Error: %s</h1>\n", err)

        }

        fmt.Fprintf(w, "<h1>Submitted message!</h1>\n<p>-%s-</p>\n", r.PostFormValue("msg"))

    })

    http.ListenAndServe("localhost:3000", r)

}

在输出中,我应该看到-hello-,我只看到--。当我在 Firefox 中检查 http 请求时,在“表单数据”面板中,我看到了msg:"hello",那么为什么 r.PostFormValue("msg")返回一个空白字符串?


慕仙森
浏览 104回答 1
1回答

慕田峪9158850

感谢 Volker 指出错误。当我注释掉该行时&nbsp;r.Header.Set("content-type", "text/html"),问题就解决了。也许这就是问题所在,或者 IDE (LiteIDE) 缓存旧版本的代码存在一些问题。无论如何,我现在可以读取发布的值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go