Go 结构体标签表达式解释器 1.0 发布,参数校验杀手锏

henrylee2cn
 henrylee2cn
发布于 2019年01月29日
收藏 40

go-tagexpr 由字节跳动开源,实现了 Golang 结构体标签表达式解释器,可用于各种场景的请求参数校验。

主要特性:

  • 支持各种常用运算符

  • 支持访问数组、切片、字典的成员

  • 支持访问当前结构中任意字段

  • 支持访问嵌套字段、非导出字段等

  • 内置 len、sprintf、regexp 函数

  • 支持单表达式与多表达式两种定义模式

  • 提供了参数校验子包

看一个参数校验的小例子:

package validator_test

import (
	"fmt"

	"github.com/bytedance/go-tagexpr/validator"
)

func Example() {
	var vd = validator.New("vd")

	type InfoRequest struct {
		Name string `vd:"($!='Alice'||(Age)$==18) && regexp('\\w')"`
		Age  int    `vd:"$>0"`
	}
	info := &InfoRequest{Name: "Alice", Age: 18}
	fmt.Println(vd.Validate(info) == nil)
	// Output:
	// true
}
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Go 结构体标签表达式解释器 1.0 发布,参数校验杀手锏
加载中

精彩评论

lemonwater
lemonwater
哇哦,原来你在字节跳动工作啊,这个项目不错,也很期待faygo有更好的发展
henrylee2cn
henrylee2cn

引用来自“最长的旅途i”的评论

我记得beego里面也有结构体描述,但是不全,很多没有
实现机制不一样,tagexpr是脚本语言的实现思路
HEQUAN123
HEQUAN123
已点星,支持 666

最新评论(10

啦啦啦拉拉
啦啦啦拉拉
都是字符不好自动补全
web实习虫
web实习虫
仰望大佬
henrylee2cn
henrylee2cn

引用来自“最长的旅途i”的评论

我记得beego里面也有结构体描述,但是不全,很多没有
实现机制不一样,tagexpr是脚本语言的实现思路
最长的旅途i
最长的旅途i
我记得beego里面也有结构体描述,但是不全,很多没有
HEQUAN123
HEQUAN123
已点星,支持 666
xiaoshiyue
xiaoshiyue
红白机
红白机
还不错哦
xpoony
xpoony
C Sharp.
张金富
张金富
哇哦,原来你在字节跳动工作啊
lemonwater
lemonwater
哇哦,原来你在字节跳动工作啊,这个项目不错,也很期待faygo有更好的发展
返回顶部
顶部