在 GoFrame 中,数据校验主要通过 gvalid 包实现。该包提供了一套功能强大的验证器,可用于验证和校验各种数据,包括表单数据、结构体、JSON 数据等。以下是一些关于 GoFrame 数据校验的基本介绍:

基本用法
package main

import (
"fmt"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/gvalid"
)

func main() {
// 待验证的数据
data := g.Map{
"name":  "John",
"age":   25,
"email": "john@example",
}

// 验证规则
rules := []string{
"name@required|alphaDash|min:6|max:12#姓名不能为空|姓名只能包含数字、字母、下划线或破折号|姓名长度必须在6到12之间",
"age@required|between:18,60#年龄不能为空|年龄必须在18到60之间",
"email@required|email#邮箱不能为空|邮箱格式不正确",
}

// 进行数据校验
if e := gvalid.CheckMap(data, rules); e != nil {
fmt.Println("Validation failed:")
fmt.Println(e.Map())
} else {
fmt.Println("Validation passed")
}
}

在上述示例中,我们使用 gvalid.CheckMap 函数对 data 进行了数据校验。rules 数组定义了验证规则,其中包含了对每个字段的验证条件。如果数据验证失败,将输出相应的错误信息;否则,输出验证通过的消息。

常用验证规则

  •  required:必填项。

  •  min、max:最小值和最大值。

  •  between:min,max:值必须在指定范围内。

  •  email:邮箱格式。

  •  alpha、alphaNum、alphaDash:字母、字母数字、字母数字下划线破折号。

  •  in:val1,val2,...:值必须在指定的值集合内。


结构体数据校验
package main

import (
"fmt"
"github.com/gogf/gf/util/gvalid"
)

type User struct {
Name  string `v:"required|alphaDash|min:6|max:12#姓名不能为空|姓名只能包含数字、字母、下划线或破折号|姓名长度必须在6到12之间"`
Age   int    `v:"required|between:18,60#年龄不能为空|年龄必须在18到60之间"`
Email string `v:"required|email#邮箱不能为空|邮箱格式不正确"`
}

func main() {
user := User{
Name:  "John",
Age:   25,
Email: "john@example",
}

if e := gvalid.CheckStruct(&user, nil); e != nil {
fmt.Println("Validation failed:")
fmt.Println(e.Map())
} else {
fmt.Println("Validation passed")
}
}

在结构体数据校验中,我们使用了 v tag 来指定验证规则。这样可以在结构体定义中直观地添加验证规则。使用 gvalid.CheckStruct 函数来进行结构体数据的校验。

GoFrame 的数据校验功能非常灵活,支持丰富的验证规则,能够满足各种场景下的数据验证需求。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7572/GoFrame