binding

package
v2.0.0+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2023 License: MIT Imports: 9 Imported by: 1

Documentation

Overview

Package binding 提供了一个非常简单的json以及form的校验功能,支持多种类型的校验。同时也可以自定义函数对某个字段进行校验。主要有两个函数 出口`binding.ParseJsonToInstance`和`binding.ValidateInstance`函数。这两个分别用来校验json和form,也可以通过在Param结构体上挂载 Check函数来自定义校验逻辑。 --------------------------------------------------------------------------------------------------------------------- 定义一个名为UserInfo的Param结构体,包含用户名称、年龄、区域,其中regex这个tag表示该字段必须符合regex指定的正则表达式,如下所示:

Basic Example:

type UserInfo struct {
	Name     string `json:"name" form:"name" regex:"^[0-9a-zA-Z_]{1,}$"`
	Age      int    `json:"age" form:"age"`
	Location string `json:"location" form:"location"`
}
ui := UserInfo{}
if err := handler.CheckParamBinding(&ui); err != nil {
	handler.ResponseAsText(err.Error())
	return
}

--------------------------------------------------------------------------------------------------------------------- 如果我们有较为复杂的教研逻辑,比如需要根据区域判断年龄,例如AK地区的年龄必须大于14,MI地区的年龄必须大于16,我们就可以对刚才的UserInfo 结构体挂载一个Check校验函数,代码示例如下:

Basic Example:

func (u *UserInfo) Check() error {
	if u.Location == "AK" && u.Age <= 14 {
		return errors.New("AK地区用户年龄必须大于14岁")
	}
	if u.Location == "MI" && u.Age <= 16 {
		return errors.New("MI地区用户年龄必须大于16岁")
	}
	return nil
}

---------------------------------------------------------------------------------------------------------------------

Package binding 字段校验功能包 提供了一个非常简单的json以及form的校验功能,支持多种类型的校验。

Index

Constants

This section is empty.

Variables

View Source
var (
	RequiredErr = NewTagErr("%s is required")
	DefaultErr  = NewTagErr("%s default is invalid")
	RegexErr    = NewTagErr("%s regex can not match")
	InvalidErr  = NewTagErr("%s is invalid")
	UnDefineErr = NewTagErr("%s is undefined")
)

RequiredErr 等变量表示不同的错误类型

View Source
var (
	ErrStructure = errors.New("UnmarshalForm() expects struct input. ")
)

ErrStructure 值类型不合法的错误

Functions

func FormBytesToStructure added in v1.0.2

func FormBytesToStructure(form []byte, obj interface{}) error

FormBytesToStructure 将x-www-form-urlencoded转换为struct实例

func NewTagErr

func NewTagErr(formatStr string) func(string) error

NewTagErr 提供了一个错误类型闭包

func ParseFormToInstance added in v1.0.2

func ParseFormToInstance(form []byte, obj interface{}) error

ParseFormToInstance 将form转为structure对应的instance,并根据tag校验字段

func ParseJsonToInstance

func ParseJsonToInstance(jsonBytes []byte, obj interface{}) error

ParseJsonToInstance 将json转为structure对应的instance,并根据tag校验字段

func UnmarshalForm added in v1.0.2

func UnmarshalForm(values url.Values, s interface{}) error

UnmarshalForm 将url.Values转为struct

func ValidateInstance

func ValidateInstance(obj interface{}) error

ValidateInstance 检查结构体实例化是否有效

  • obj: 待校验的实例,需要传递一个指针

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL