构建安全的Go Web应用:表单处理、Cookie管理与OAuth认证
1. Go语言中的表单处理
在早期构建强大的Web应用时,表单处理是开发的关键环节。如今,Go语言让处理表单值变得异常简单,表单值通过请求结构体的 Form
属性暴露,以 map[string][]string
的形式处理。
若要处理表单提交的数据,只需访问该集合并进行相应处理。不过,这里不提供手动处理表单的代码示例,因为这种方式与后续要介绍的模式有所冲突。若使用React等框架构建强大的交互式页面,可利用其验证用户输入并将输入提交到Go应用暴露的RESTful端点,而非使用传统的表单提交方法。
若必须手动处理表单,可访问请求结构体的 Form
映射,以下示例处理函数将表单键值对输出到控制台:
func processFormHandler(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
for k, v := range r.Form {
fmt.Printf("Key %s, Val %s", k, strings.Join(v, ""))
}
fmt.Fprintf(w, "Form handled.\n")
}
注意:在访问 Form
属性之前,需根据接收的表单类型调用 ParseForm
或 ParseMulti