字节跳动开源Go结构体标签表达式解释器,成请求参数校验的杀手锏

16次阅读

共计 545 个字符,预计需要花费 2 分钟才能阅读完成。

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
}
更多语法详情,请转到 Github 源码仓库:https://github.com/bytedance/…

正文完
 0