答案:通过net/http包解析表单,使用自定义Validator结构体封装空值、长度及正则校验逻辑,实现轻量级表单验证。

在Golang中实现简单的表单验证功能,不需要引入复杂的框架也能完成。核心思路是接收HTTP请求中的表单数据,手动检查字段是否为空、格式是否正确,并返回适当的错误信息。下面介绍一种轻量、实用的实现方式。
接收并解析表单数据
使用net/http包处理POST请求,调用r.ParseForm()解析表单内容。之后可以通过r.Form.Get("field")获取字段值。
示例代码:
func loginHandler(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
// 返回登录页面
fmt.Fprintf(w, `
`)
return
}
if r.Method == "POST" {
r.ParseForm()
username := r.Form.Get("username")
password := r.Form.Get("password")
// 开始验证
var errors []string
if username == "" {
errors = append(errors, "用户名不能为空")
}
if password == "" {
errors = append(errors, "密码不能为空")
}
if len(errors) > 0 {
// 返回错误信息
w.WriteHeader(http.StatusBadRequest)
for _, e := range errors {
fmt.Fprintf(w, "%s
", e) } fmt.Fprintf(w, "返回") } else { fmt.Fprintf(w, "登录成功,欢迎 %s!", username) } } }封装基础验证逻辑
为了避免重复写判断空值的代码,可以写一个简单的验证函数,返回错误列表。
立即学习“go语言免费学习笔记(深入)”;
例如:
功能简介:1.用户留言功能2.用户定货功能3.定制货货功能4.定制网页样式和其实设置(比如主页)5.强大的管理功能(现在的程序都是管理功能大于应用功能:)6.管理功能支持查看订货单,留言,分页,删除等功能管理页面:login.asp管理密码:admin
type Validator struct {
Errors []string
}
func (v *Validator) Required(field, value string) {
if value == "" {
v.Errors = append(v.Errors, field+"不能为空")
}
}
func (v *Validator) MinLength(field, value string, n int) {
if len(value) < n {
v.Errors = append(v.Errors, field+"至少需要%d个字符", n)
}
}
使用方式:
v := &Validator{}
v.Required("用户名", username)
v.Required("密码", password)
v.MinLength("密码", password, 6)
if len(v.Errors) > 0 {
for _, e := range v.Errors {
fmt.Fprintf(w, "%s
", e)
}
return
}
处理常见字段类型(邮箱、数字等)
对于邮箱或数字类字段,可以借助正则表达式进行格式校验。
比如验证邮箱:
import "regexp"
func isValidEmail(email string) bool {
pattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
return regexp.MustCompile(pattern).MatchString(email)
}
然后在验证逻辑中加入:
if !isValidEmail(email) {
errors = append(errors, "邮箱格式不正确")
}
基本上就这些。通过ParseForm获取数据,配合简单的条件判断和正则表达式,就能实现基本的表单验证。不复杂但容易忽略的是:一定要在服务端做验证,前端校验可被绕过,不能替代后端检查。









