binding

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jan 22, 2026 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Bind

func Bind(req *protocol.Request, obj interface{}, pathParams param.Params) error

Bind binds data from *protocol.Request to obj. NOTE:

obj should be a pointer.

func BindAndValidate

func BindAndValidate(req *protocol.Request, obj interface{}, pathParams param.Params) error

BindAndValidate binds data from *protocol.Request to obj and validates them if needed. NOTE:

obj should be a pointer.

func Validate

func Validate(obj interface{}) error

Validate validates obj with "vd" tag NOTE:

obj should be a pointer.
Validate should be called after Bind.

Types

type BindConfig

type BindConfig struct {
	// LooseZeroMode if set to true,
	// the empty string request parameter is bound to the zero value of parameter.
	// NOTE:
	//	The default is false.
	//	Suitable for these parameter types: query/header/cookie/form .
	LooseZeroMode bool
	// DisableDefaultTag is used to add default tags to a field when it has no tag
	// If is false, the field with no tag will be added default tags, for more automated binding. But there may be additional overhead.
	// NOTE:
	// The default is false.
	DisableDefaultTag bool
	// DisableStructFieldResolve is used to generate a separate decoder for a struct.
	// If is false, the 'struct' field will get a single inDecoder.structTypeFieldTextDecoder, and use json.Unmarshal for decode it.
	// It usually used to add json string to query parameter.
	// NOTE:
	// The default is false.
	DisableStructFieldResolve bool
	// EnableDecoderUseNumber is used to call the UseNumber method on the JSON
	// Decoder instance. UseNumber causes the Decoder to unmarshal a number into an
	// interface{} as a Number instead of as a float64.
	// NOTE:
	// The default is false.
	// It is used for BindJSON().
	EnableDecoderUseNumber bool
	// EnableDecoderDisallowUnknownFields is used to call the DisallowUnknownFields method
	// on the JSON Decoder instance. DisallowUnknownFields causes the Decoder to
	// return an error when the destination is a struct and the input contains object
	// keys which do not match any non-ignored, exported fields in the destination.
	// NOTE:
	// The default is false.
	// It is used for BindJSON().
	EnableDecoderDisallowUnknownFields bool
	// TypeUnmarshalFuncs registers customized type unmarshaler.
	// NOTE:
	// time.Time is registered by default
	TypeUnmarshalFuncs map[reflect.Type]inDecoder.CustomizeDecodeFunc

	// Validator is used to validate for BindAndValidate()
	//
	// Deprecated: use ValidatorFunc instead. You can create a ValidatorFunc
	// from a StructValidator using MakeValidatorFunc()
	Validator StructValidator

	// ValidatorFunc is used to validate structs with custom validation logic.
	// It replaces the deprecated Validator field and provides request context.
	// NOTE:
	//   The default is nil. If set, this takes precedence over the Validator field.
	//   The function signature allows access to the request for context-aware validation.
	ValidatorFunc func(req *protocol.Request, v any) error
}

BindConfig contains options for default bind behavior.

func NewBindConfig

func NewBindConfig() *BindConfig

func (*BindConfig) MustRegTypeUnmarshal

func (config *BindConfig) MustRegTypeUnmarshal(t reflect.Type, fn func(req *protocol.Request, params param.Params, text string) (reflect.Value, error))

MustRegTypeUnmarshal registers customized type unmarshaler. It will panic if exist error.

func (*BindConfig) RegTypeUnmarshal

func (config *BindConfig) RegTypeUnmarshal(t reflect.Type, fn inDecoder.CustomizeDecodeFunc) error

RegTypeUnmarshal registers customized type unmarshaler.

func (*BindConfig) UseStdJSONUnmarshaler

func (config *BindConfig) UseStdJSONUnmarshaler()

UseStdJSONUnmarshaler uses encoding/json as json library NOTE:

The current version uses encoding/json by default.
UseStdJSONUnmarshaler will remain in effect once it has been called.

func (*BindConfig) UseThirdPartyJSONUnmarshaler

func (config *BindConfig) UseThirdPartyJSONUnmarshaler(fn func(data []byte, v interface{}) error)

UseThirdPartyJSONUnmarshaler uses third-party json library for binding NOTE:

UseThirdPartyJSONUnmarshaler will remain in effect once it has been called.

type Binder

type Binder interface {
	Name() string
	Bind(*protocol.Request, interface{}, param.Params) error
	BindQuery(*protocol.Request, interface{}) error
	BindHeader(*protocol.Request, interface{}) error
	BindPath(*protocol.Request, interface{}, param.Params) error
	BindForm(*protocol.Request, interface{}) error
	BindJSON(*protocol.Request, interface{}) error
	BindProtobuf(*protocol.Request, interface{}) error

	Validate(*protocol.Request, interface{}) error
}

func DefaultBinder

func DefaultBinder() Binder

func NewDefaultBinder

func NewDefaultBinder(config *BindConfig) Binder

type StructValidator deprecated

type StructValidator interface {
	ValidateStruct(interface{}) error
	Engine() interface{}
	ValidateTag() string
}

StructValidator defines the interface for struct validation.

Deprecated: Use ValidatorFunc in BindConfig instead. You can create a ValidatorFunc from a StructValidator using MakeValidatorFunc().

func DefaultValidator deprecated

func DefaultValidator() StructValidator

DefaultValidator returns the default StructValidator instance that uses tagexpr validation. The validator uses the "vd" tag for validation expressions and provides comprehensive struct field validation capabilities.

Deprecated: Use WithCustomValidatorFunc with a custom validation function instead. For migration: convert this StructValidator to a ValidatorFunc using MakeValidatorFunc().

Example migration:

// Old way (deprecated)
validator := binding.DefaultValidator()

// New way (recommended)
validatorFunc := binding.MakeValidatorFunc(binding.DefaultValidator())
server.WithCustomValidatorFunc(validatorFunc)

func NewValidator deprecated

func NewValidator(config *ValidateConfig) StructValidator

NewValidator creates a new StructValidator with the given configuration.

Deprecated: Use WithCustomValidatorFunc with a custom validation function instead. You can convert the returned StructValidator to a ValidatorFunc using MakeValidatorFunc().

type ValidateConfig deprecated

type ValidateConfig struct {
	ValidateTag string
	ErrFactory  ValidateErrFactory
}

ValidateConfig configures validation behavior for the built-in StructValidator.

Deprecated: Use WithCustomValidatorFunc with a custom validation function instead.

func NewValidateConfig deprecated

func NewValidateConfig() *ValidateConfig

NewValidateConfig creates a new ValidateConfig.

Deprecated: Use WithCustomValidatorFunc with a custom validation function instead.

func (*ValidateConfig) MustRegValidateFunc deprecated

func (config *ValidateConfig) MustRegValidateFunc(funcName string, fn func(args ...interface{}) error, force ...bool)

MustRegValidateFunc registers validator function expression. NOTE:

If force=true, allow to cover the existed same funcName.
MustRegValidateFunc will remain in effect once it has been called.

Deprecated: Use WithCustomValidatorFunc with a custom validation function instead.

func (*ValidateConfig) SetValidatorErrorFactory deprecated

func (config *ValidateConfig) SetValidatorErrorFactory(errFactory ValidateErrFactory)

SetValidatorErrorFactory customizes the factory of validation error.

Deprecated: Use WithCustomValidatorFunc with a custom validation function instead.

func (*ValidateConfig) SetValidatorTag deprecated

func (config *ValidateConfig) SetValidatorTag(tag string)

SetValidatorTag customizes the validation tag.

Deprecated: Use WithCustomValidatorFunc with a custom validation function instead.

type ValidateErrFactory

type ValidateErrFactory func(fieldSelector, msg string) error

type ValidatorFunc

type ValidatorFunc func(*protocol.Request, interface{}) error

ValidatorFunc defines a validation function that can access request context. It takes a request and the object to validate, returning an error if validation fails.

func MakeValidatorFunc

func MakeValidatorFunc(s StructValidator) ValidatorFunc

MakeValidatorFunc creates a validation function from a StructValidator. It optimizes validation by caching tag analysis results and skipping validation entirely for types that don't have validation tags.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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