最佳实践:r.PostFormValue("key") VS r.PostForm.Get("key")

Best Practice: r.PostFormValue("key") VS r.PostForm.Get("key")

当我查看如何读取表单数据的示例时,我遇到了两种读取 post 表单值的方法:

使用r.PostFormValue()

username := r.PostFormValue("username")
password := r.PostFormValue("password")

使用r.PostForm.Get()

username := r.PostForm.Get("username")
password := r.PostForm.Get("password")

为什么要用一个而不用另一个?

两者Request.PostFormValue() and Request.PostForm.Get()return是相同的值,主要区别是Request.PostForm不会自动填充。

Request.PostForm是表单数据的映射,通过调用Request.ParseMultipartForm() or Request.ParseForm()填充。这不会自动发生,因为这需要读取和解析请求正文,并且在所有情况下都不需要这样做。

Request.PostFormValue() 会在必要时调用 ParseMultipartForm()ParseForm()(如果之前未调用过)以确保填充 Request.PostFormRequest.PostForm 是一个 selector 表示 RequestPostForm 字段,因此,它不涉及调用 ParseForm()。它假设您已经完成了。如果没有,任何 PostForm.Get() 调用都将“静默”return 一个空字符串。

因此,如果您已经解析了表单数据(例如,通过显式调用 Request.ParseForm() 或通过先前的 Request.PostFormValue() 调用间接调用),您应该只使用 Request.PostForm.Get()