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

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

使用r.PostFormValue()

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

使用r.PostForm.Get()

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

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


森林海
浏览 154回答 1
1回答

犯罪嫌疑人X

两者都Request.PostFormValue()返回Request.PostForm.Get()相同的值,主要区别在于Request.PostForm不会自动填充。Request.PostForm是表单数据的映射,通过调用Request.ParseMultipartForm()or填充Request.ParseForm()。这不会自动发生,因为这需要读取和解析请求正文,而这可能并非在所有情况下都需要。Request.PostFormValue()调用ParseMultipartForm()并ParseForm()在必要时(如果之前未调用过)确保Request.PostForm已填充。Request.PostForm是一个表示's字段的选择器,因此,它不涉及调用. 它假设你已经这样做了。如果没有,任何调用都将“静默”返回一个空字符串。RequestPostFormParseForm()PostForm.Get()所以你应该只Request.PostForm.Get()在你已经解析过表单数据的情况下使用(例如通过显式调用Request.ParseForm()或间接通过先前的Request.PostFormValue()调用)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go